对象成员函数的回调?(Javascript)
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/
为什么当我传入对象成员函数时它未定义? 有没有办法将对象成员函数作为回调传递?
当你执行x.y(this.x)
时,this
是对窗口的引用,而不是a
的实例。我想你可能打算是:
x.y(x.x);
由于x
是a
的实例,这会将对a
的x
方法的引用传递给a
的这个实例的y
方法。
当你执行x.y(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'。所以,a()
的函数x()
和y()
,应该称为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
相关文章:
- JavaScript回调函数
- 如何在javascript回调函数中返回多个变量
- Google Data API上的OOP Javascript回调方法
- JavaScript回调函数和Google Feed API
- 行上的Primefaces数据表选择javascript回调
- 使用jasmine测试JavaScript回调函数
- 当页面中的某些脚本已经执行时,javascript回调
- 性能惩罚JavaScript回调函数
- JavaScript回调问题
- 需要Javascript回调ajax解释
- 未通过单击按钮调用JavaScript回调
- Google+登录JavaScript回调问题
- 在对象内完成ajax调用后触发Javascript回调
- 独立线程上的Javascript回调函数
- 循环函数(Javascript回调帮助)
- 使用JavaScript回调函数了解变量作用域和闭包
- 带有参数的Javascript回调函数
- 带有数据库的Javascript回调
- Node.js/express,javascript回调函数未执行
- javascript回调如何知道它们的参数