我创建的对象有问题,看起来像这样:
var myObject = {
AddChildRowEvents: function(row, p2) {
if(document.attachEvent) {
row.attachEvent('onclick', function(){this.DoSomething();});
} else {
row.addEventListener('click', function(){this.DoSomething();}, false);
}
},
DoSomething: function() {
this.SomethingElse(); //<-- Error here, object 'this' does not support this method.
}
}
问题是,当我在“DoSomething”函数中时,“this”没有引用“myObject”,我做错了什么?
最佳答案
当函数被调用时,“this”指的是行。如果你想拥有这个对象,你可以这样做: ]
AddChildRowEvents: function(row, p2) {
var theObj = this;
if(document.attachEvent) {
row.attachEvent('onclick', function(){theObj.DoSomething();});
} else {
row.addEventListener('click', function(){theObj.DoSomething();}, false);
}
},
当函数被调用时,它可以访问函数定义时作用域中的变量 theOBj。
关于Javascript 闭包和 'this',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/346015/