我在使用普通旧JavaScript(无框架)在回调函数中引用我的对象时遇到了一些麻烦。function foo(id) { this.dom = document.getElementById(id); this.bar = 5; var self = this; this.dom.addEventListener("click", self.onclick, false);}foo.prototype = { onclick : function() { this.bar = 7; }};现在,当我创建一个新对象时(在DOM加载后,使用span#test)var x = new foo('test');在“这个”的onclick函数指向跨度#测试里面,而不是Foo对象。如何在onclick函数中获取对foo对象的引用?
3 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
解释是,self.onclick这并不意味着您认为它在JavaScript中意味着什么。它实际上意味着onclick对象原型中的功能self(不以任何方式引用self其自身)。
JavaScript仅具有函数,没有像C#这样的委托,因此无法传递方法AND应该将其应用于回调的对象。
在回调中调用方法的唯一方法是在回调函数中自己调用它。由于JavaScript函数是闭包,因此它们能够访问在其创建范围内声明的变量。
var obj = ...;
function callback(){ return obj.method() };
something.bind(callback);
添加回答
举报
0/150
提交
取消