gpt4 book ai didi

javascript - 关于匿名函数的 Javascript Ninja 书籍示例的 secret

转载 作者:行者123 更新时间:2023-11-29 21:38:22 25 4
gpt4 key购买 nike

在无法理解前面的章节(包括断言的概念)之后,我又回到了这本书,但现在我理解了这一点,我继续阅读第 4 章,当我看到下面的例子时。我认为对我来说没有意义的部分(即使是书中的图表),为什么当 ninja={} 时(我假设忍者内部的鸣叫声消失了?),为什么 samurai 仍然可以引用那个匿名函数基本上就像 ninja.chirp?)。

我完全得到了 this.chirp 的修复以使其工作,但我真的不明白为什么 samurai 能够指向不再可用的 chirp 的概念(或者这是我不是的闭包完全理解?

我得到了正常的闭包,其中函数返回并可以访问词法范围,但这看起来不是那样的..)

var ninja = {
chirp: function(n){
return n > 1 ? ninja.chirp(n-1) + "-chirp" : "chirp";
}
};
var samurai = { chrip: ninja.chirp };
ninja = {};
try {
assert(samurai.chirp(3) == "chirp-chirp-chirp", "is this going to work?);
}

最佳答案

对象是“copy by reference”所以当创建武士时,它复制了忍者。如果你在复制到 samurai 之后重置 ninja,那么 ninja 仍然存在于 samurai 的上下文中。

如果您将 ninja = {}; 移动到 var samurai = { chrip: ninja.chirp }; 之上,那么 samurai 上下文中的 ninja 将为空。

关于javascript - 关于匿名函数的 Javascript Ninja 书籍示例的 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34163503/

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