gpt4 book ai didi

javascript - 为什么 this 在这两种情况下引用的关键字不同?

转载 作者:行者123 更新时间:2023-11-28 13:34:04 24 4
gpt4 key购买 nike

第一个代码

var object1 = {name: "my object", 
ha: function() {
return this;
}
}

object1.ha() #=> Object {name: "my object", ha: function}

第二个代码

var object2 = {name: "my object2", 
ha2: function() {
return function() {
return this;
}
}
}

object2.ha()() #=> window

最佳答案

因为 object2 中的 this 通过放置在匿名函数中而失去了父对象的上下文,并且默认绑定(bind)到全局对象,在浏览器中,该对象是 window.

您可以通过本地化对象引用来解决这个问题:

var object2 = {
name : "my object2",
ha2 : function() {
var _this = this; // <-- here
return function() {
return _this;
}
}
}

关于javascript - 为什么 this 在这两种情况下引用的关键字不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22774392/

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