gpt4 book ai didi

javascript - 如何在 Javascript 中使用 getter 和 setter

转载 作者:可可西里 更新时间:2023-11-01 02:29:19 25 4
gpt4 key购买 nike

有人可以向我解释为什么这段简单的代码不起作用吗?

var user = {
get name() {
return this.name;
},
set name(value) {
this.name = value;
}
};
user.name = 'David';

当我将其放入 Firefox 21.0 的 Firebug 控制台时,出现以下错误:

InternalError: too much recursion
this.name = value;

为什么?在 Javascript 中定义 getter 和 setter 的正确方法是什么?

最佳答案

当您尝试设置 name 时,该函数将设置 this.name = value

但该函数现在正在尝试设置 name。因此它将再次调用该函数并将 this.name 设置为 value

但该函数现在正在尝试设置 name。因此它将再次调用该函数并将 this.name 设置为 value

但该函数现在正在尝试设置 name。因此它将再次调用该函数并将 this.name 设置为 value

....... 稍后......

但该函数现在正在尝试设置 name。因此它将再次调用该函数并将 this.name 设置为 value

但浏览器已确定调用堆栈太深,函数调用自身的次数太多,因此为了防止完全崩溃,它会导致函数失败并出现您看到的错误。


尝试使用不同的属性名称(例如 this._name)来存储和检索值。

关于javascript - 如何在 Javascript 中使用 getter 和 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17151298/

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