gpt4 book ai didi

Javascript 作用域和变量

转载 作者:数据小太阳 更新时间:2023-10-29 05:52:24 25 4
gpt4 key购买 nike

var name = "Bob";

var book = {
name: "Harry Potter",
writeName: function() {
return function() {
document.writeln(this.book.name);
}
}
};

当我调用它时

book.writeName()();

我想让它打印 Harry Potter(不是 Bob),但这是:

var book2 = book;
book = null;
book2.writeName()();

现在在应该寻找 this.book2 的地方寻找 this.book(它是 null)

如何引用变量?

最佳答案

这里你需要的是 writeName 闭包中的一个变量:

var book = {
name: "Harry Potter",
writeName: function() {
var name = this.name; // turn dynamic property into closure variable
return function() {
document.writeln(name);
}
}
};
book.writeName()(); // Harry Potter

除了在闭包中仅存储 name 之外,您还可以像@Quentin 的回答那样存储对对象的引用。如果您计划在调用返回的函数之前更改 .name 属性,这可能会有所不同。

关于是使用 this 还是 book 来引用您的对象的问题,请参阅 Javascript: Object Literal reference in own key's function instead of 'this' .

关于Javascript 作用域和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21830160/

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