[英]Callback of a object member function? (Javascript)
var a = function(){
this.x = function(){alert('apple');}
this.y = function(callback){
if(typeof callback == 'undefined' || callback == null)
alert('argh')
else
callback();
}
}
var foo = function(){alert('blah')};
var x = new a();
x.y(this.x); // why is this one undefined
x.y(foo); // works as expected
這是jsfiddle鏈接: http : //jsfiddle.net/W7FyZ/2/
當我傳遞對象成員函數時,為什么未定義? 有沒有一種方法可以將對象成員函數作為回調傳遞?
當你做xy(this.x)
this
是對窗口的引用,而不是一個實例a
。 我想您可能打算做的是:
x.y(x.x);
因為x
是的一個實例a
,這個傳遞給一個參考x
的這個實例的方法a
對y
的此實例的方法a
。
當您執行xy(foo)
, foo
是在此范圍內聲明的函數,因此您將對foo
函數的引用傳遞到x
的y
方法中。
我剛剛重命名了您的變量,以消除混亂。
var a = function(){
this.x = function(){alert('apple');}
this.y = function(callback){
if(typeof callback == 'undefined' || callback == null)
alert('argh')
else
callback();
}
}
var foo = function(){alert('blah')};
現在,在執行部分:
var myA = new a();
上面的行分配函數a()變量'myA'。 因此,功能x()
和y()
的a()
應該被稱為myA.x()
和myA.y()
x.y(myA.x); // it works
x.y(this.myA.x) // This also works as this is a current window
x.y(foo); // works as expected
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.