İşte "Javascript - The Good Parts" adlı çalışma örneğidir.işlev çağırma örüntüsü tanımlama kuralları JavaScript
function add(x, y){ return x + y};
var myObject = {
value: 0,
increment: function (inc) {
this.value += typeof inc === 'number' ? inc : 1;
}
};
myObject.increment(2);
document.writeln(myObject.value);
myObject.double = function () {
var that = this; // Workaround.
var helper = function () {
that.value = add(that.value, that.value)
};
helper(); // Invoke helper as a function.
};
myObject.double();
document.writeln(myObject.value); // 4
İşlev çağırma deseni için, 'bu' nesnesi genel referansa sahip olacaktır. Ama ben tam anlayamıyorum altında-luk söz Geçici çözümün: -
var that = this; // Workaround.
Bunu yaparsak, biz sadece 'o' 'this' referansı kopyalama değildir? yani 'bu' küresel kapsamı 'bu' ile aynı tutacak mı? Bu nasıl dahili olarak çalışır?
+1 alternatif için – sojin
Ayrıca, bahsi geçen kitapta (Javascript The Good Parts), önceki paragraf, "Yöntem Çağırma Kalıbı" ile ilgili açık bir şekilde açıklanmaktadır: Bir fonksiyon bir nesnenin bir özelliği olarak saklandığında bu bir yöntem. Bir yöntem çağrıldığında, bu, bu nesneye bağlıdır. ', Sizin durumunuzda' myObject.double = function() {...}; 'sizin Method Invocation Pattern'inizdir, bu yüzden içinde bulunduğunda, 'this'; myObject' –
Dikkat edilmesi gereken diğer bir nokta: sağlanan örnek 'İşlev Çağırma Modeli' için' iç işlev 'işlevini kullanmaktadır. Mantığı göstermek için çok daha basit bir örnek oluşturdum, bkz. Http://jsbin.com/ciriwabeliwi/1/edit?js,console. Son olarak, kitap tarafından sağlanan örnek http://jsbin.com/roheyekonabe/1/edit?js ,console ile eşdeğerdir. –