gpt4 book ai didi

javascript - 看不懂这是什么意思

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:18:20 25 4
gpt4 key购买 nike

谁能在innerF下面详细说明一下,this指的是什么? User 还是 innerF

function User(){
this.id = 1;
};

User.prototype.sayHi = function(){
var innerF = function(){
this.id = 2; // "this" refers to User or innerF ?
};

return innerF;
};

此外,new 关键字或 anonymous 函数是否与更改 this 关键字的引用有关?

如果我这样调用它会怎样:

var u = User;
var f = u.sayHi();
f();

或者

var u = new User;
var f = u.sayHi();
f();

谢谢

最佳答案

this 本地在 innerF 中引用的内容将取决于最终调用函数的方式。可以通过多种方式调用它,从而改变 this 的含义。例如

var u = new User();
var innerF = u.sayHi();
innerF(); // 'this' is window
innerF.call(u); // 'this' is 'u'
innerF.call("hello"); // 'this' is "hello"

根据您的代码,您似乎希望 this 引用 User 的实例,在该实例上调用了 sayHi。如果是这样,那么您需要将 this 存储在本地并在 innerF 中引用该本地。

User.prototype.sayHi = function(){
var self = this;
var innerF = function(){
self.id = 2;
};

return innerF;
};

请注意,sayHi 中的 this 也不能保证指向 User 实例。一般来说,可以对 sayHi 执行与对 innerF 相同的技巧。例如

var sayHi = u.sayHi;
sayHi(); // 'this' is window

关于javascript - 看不懂这是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9279853/

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