Bu sormak için garip bir soru, ama NodeJS'yi öğreniyorum ve bir sorum var. Java'da bir nesneden bir yöntem çağırdığımda, this
örneği aynı kalır (bu örnekte olduğu gibi).nodejs - Bu "bu" nedir?
Bu, doğruyu döndürür (teoride, bu benim başımın üst kısmındaki koddur). Ancak, NodeJS'de benzer bir şey yapmaya çalıştığımda başarısız olur.
var MyObject = function() {
this.other = new OtherObject();
this.other.on("error", this.onError);
console.log(this); //This returns the MyObject object
}
MyObject.prototype.onError = function (e) {
console.log(this); //This returns the OtherObject object, where I thought it would return the MyObject object.
}
sorum neden bu kadar ve bu benim parçası yanlış yapılıyor eğer, nasıl doğru onError yönteminden MyObject örneğinde diğer değişkenleri referans verebilir mi?
AFAIK, 'JavaScript içinde this' oldukça zordur. Fonksiyon olarak çağrıldığında, tanımlanan fonksiyonun nerede olduğu değil, arayan kişiye işaret eder. – walther
@ walther - * bu * javascript'te hiç de zor değildir. Bu çağrı veya * bind * kullanımı ile ayarlanır, bu kadar. Diğer dillerden farklı olsa da, anlamak gerçekten zor değil. – RobG
@RobG, bu kesinlikle zor kısmıdır - diğer diller bunu farklı yapar ve bazı geliştiricilerin cehennemi karıştırır. Gerçekten açık olsaydı, böyle bir soru asla ortaya çıkmazdı (ve bu ilk ve son zaman değil). – walther