[英]Using `Object.defineProperty` with RangeError
我正在尝试使用Object.defineProperty
来更新我的obj
对象,以便在obj.name
上有一个get
和set
访问obj.name
。
var obj = {};
Object.defineProperty(obj, 'name', {
get: function() { return this.name; },
set: function(x) { this.name = x; }
});
console.log("obj:", obj);
console.log("obj.name:", obj.name);
但是我得到了一个Uncaught RangeError: Maximum call stack size exceeded
。
如何使用Object.defineProperty
在obj
的name
属性上添加get
和set
访问器?
当你得到obj.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
当你得到this.name
, get
调用get
函数,它返回this.name
的值。
未捕获RangeError:超出最大调用堆栈大小。
尝试return this.__name;
this.__name = x;
代替。
您无法使用与使用Object.defineProperty
定义的属性相同的名称访问getter或setter中的属性。 您创建了一个永不退出的递归函数调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.