gpt4 book ai didi

Javascript 闭包和 'this'

转载 作者:IT王子 更新时间:2023-10-29 03:14:40 28 4
gpt4 key购买 nike

我创建的对象有问题,看起来像这样:

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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com