SORU
19 Ocak 2009, PAZARTESİ


Javascript: nasıl "bu" değişken kolay mı?

Javascript çok iyi bir anlayış, "bu" değişken. set için iyi bir yol bulamıyorum dışında var Düşünün:

var myFunction = function(){
    alert(this.foo_variable);
}

var someObj = document.body; //using body as example object
someObj.foo_variable = "hi"; //set foo_variable so it alerts

var old_fn = someObj.fn;   //store old value
someObj.fn = myFunction;   //bind to someObj so "this" keyword works
someObj.fn();              
someObj.fn = old_fn;       //restore old value

Bir şekilde son 4 satır olmadan bunu yapmak için var mı? Oldukça sinir bozucu... güzel ve zeki, ama bir faydası olduğunu düşündüğüm bir anonim işlev, bağlayıcı denedim:

var myFunction = function(){
    alert(this.foo_variable);
}

var someObj = document.body;        //using body as example object
someObj.foo_variable = "hi";        //set foo_variable so it alerts
someObj.(function(){ fn(); })();    //fail.

Belli ki, myFunction içine değişken geçirmeden bir seçenek... ama bu sorunun amacı bu değil.

Teşekkürler.

CEVAP
19 Ocak 2009, PAZARTESİ


İki yöntem javascript tüm fonksiyonlar için tanımlanmış, call() ve geçerli(). Fonksiyon sözdizimi gibi görünüyor:

call( /* object */, /* arguments... */ );
apply(/* object */, /* arguments[] */);

Bu işlevleri ne çağrılan ben onların işlevi, değeri atama arayın . ben^>nesneparametre içinbu.


var myFunction = function(){
    alert(this.foo_variable);
}
myFunction.call( document.body ); 

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • B3ASTTY™

    B3ASTTY™

    27 Mayıs 2013
  • Microsoft Research

    Microsoft Re

    24 EKİM 2008
  • Truc Minh

    Truc Minh

    23 Ocak 2011