gpt4 book ai didi

javascript - 在控制台中打印对象时未定义的输出

转载 作者:行者123 更新时间:2023-12-03 05:21:04 27 4
gpt4 key购买 nike

假设我有一个具有属性和方法的对象。

当我将 this 对象分配给另一个对象时,我执行以下代码。在控制台中打印对象 obj1 时,它给了我未定义的未定义输出,任何人都可以帮助我解决这个问题,并向我解释一下这种行为。

谢谢。

var emp = {
fname: "sachin",
lname: "pawar",
getname: function() {
return this.fname + " " + this.lname;
}
};
var obj = emp.getname;
var obj1 = obj();
var obj3 = emp.getname();
console.log(obj1);

最佳答案

问题是,当通过以下行调用时,getname 方法中的 this 未定义:

var obj1 = obj();

在 JavaScript 中,this 取决于调用函数的上下文。因此,当您将其作为针对 emp 对象的“点方法”调用时,this 指的是其包含对象。在您称之为“独立”的地方,它没有任何联系,并且this未定义。

您可以绑定(bind)独立调用以为其提供上下文,如下所示:

var obj=emp.getname.bind(emp);
var obj1=obj();

然后,当它执行时,它将使用emp来获取this的上下文。

关于javascript - 在控制台中打印对象时未定义的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41376880/

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