【发布时间】:2014-03-02 14:58:20
【问题描述】:
谁能解释一下为什么这段简单的代码不起作用?
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(),因此出现错误“递归过多”
-
问题是你试图在你的设置器中设置一个名为“name”的属性。那会做什么?它会调用setter,它会尝试设置一个名为“name”的属性。那会做什么? ...
-
问题是
this.name = value;触发了函数set name(value),它设置了this.name = value;,又触发了set name(value)函数……我可以继续。 -
@StephenKennedy 它们确实作为原生功能存在。再加上你的评论离题了。
标签: javascript oop