W niektórych przypadkach słowo kluczowe this
powinno działać poprawnie. Jeśli jawnie wywołasz myNameSpace.mySecondFunction()
, wtedy this.myFirstFunction()
zostanie wykonane zgodnie z przeznaczeniem.
Jeśli używasz myNameSpace.mySecondFunction
jako funkcji obsługi zdarzeń, prawdopodobnie nie będzie. W przypadku obsługi zdarzeń potrzebujesz w jakiś sposób odwołać się do przestrzeni nazw, której chcesz użyć. Wiele frameworków JavaScript umożliwia zdefiniowanie słowa kluczowego this
. Na przykład w MooTools można wykonać myNameSpace.mySecondFunction.bind(myNameSpace)
, co spowoduje, że this
odniesie się do myNameSpace
wewnątrz mySecondFunction
. Jeśli nie używasz ramy można dokonać obsługi zdarzeń anonimowej funkcji takich jak:
document.getElementById('myId').addEventListener('click', function(e) {
myNameSpace.mySecondFunction.call(myNameSpace);
});
Aby uzyskać więcej informacji na temat sposobu połączenia chciałbym odnosić się do MDC page for the call function czy można wykorzystać apply który zachowuje się podobnie jak zadzwonić ale przechodząc tablica argumentów dla drugiego parametru, zamiast mieć podejście podobne do varargs dla dodatkowych parametrów.
Wszystkie te sugestie są orzekane na definiowanie nazw jako @Harnish suggested:
var myNameSpace = {
myFirstFunction: function(){
alert("Hello World!");
},
mySecondFunction: function(){
this.myFirstFunction();
}
}
Aby uzyskać więcej informacji na temat funkcji JavaScript wiążące Goraco sugeruję czytanie Justin's article on Function scope and binding in JavaScript
Twój przykład jest poprawny, to powinno działać. –