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

  • Barnacules Nerdgasm

    Barnacules N

    20 Temmuz 2006
  • Joshua Bane

    Joshua Bane

    24 Temmuz 2007
  • Strata1000

    Strata1000

    28 EYLÜL 2009