Czytałem projekt gry z HTML5 i JavaScriptem i wprowadziłem mnie do obiektów. Po przeczytaniu książki i pracy nad projektami postanowiłem wykorzystać tę nowo odkrytą wiedzę i zintegrować obiekty w moich własnych projektach. Więc oto moje pytanie może, czy też powinno, czy obiekty nazywają swoje własne funkcje? Na przykład:Funkcja wywoływania obiektów JavaScript od siebie
var someObject = {
start: function() {
check();
},
check: function() {
console.log("Check!");
}
};
someObject.start();
książka nie przedstawiają przykład z zegarem, który to robi:
var timer = {
start: function() {
var self = this;
window.setInterval(function(){self.tick();}, 1000);
},
tick: function() {
console.log('tick!');
}
};
W przykładzie z obiektu timera to sprawia, że odniesienie do siebie, aby wywołać funkcję wewnętrzną, Czy oznacza to, że powinienem użyć self do wywoływania funkcji wewnętrznych, czy też jest to właściwy sposób na zrobienie tego z obiektami? Lub najlepsze praktyki? Z góry dziękuję.
var someObject = {
start: function() {
var self = this;
self.check();
},
check: function() {
console.log("Check!");
}
};
someObject.start();
Powodem używają go w 'setTimeout' przykład, ponieważ jego wywołania zwrotnego jest wykonywany w zakresie globalnym, a więc wartości' this' w 'setTimeout' callback to 'window'. Aby zachować odniesienie do oryginalnego obiektu, musisz użyć tej metody (przechowywania go w 'self') lub jakiejś formy użycia' Function.bind() ' – Ian