我在像这样的javascript对象中定义了一个属性
function obj()
{
this.elems = [1,2,3]
Object.defineProperty(this, 'length', {
get: function() {
return this.elems.length;
}
});
}
到目前为止,一切正常,我已经定义了一个带有两个参数的函数,一个属性名及其同义词
this.defineSyn = function(property,syn)
{
Object.defineProperty(this, syn, function() {
return this[property];
});
}
现在在对象定义中我像这样调用defineSyn
函数
this.defineSyn('length','len');
但是当我声明一个变量并尝试调用属性len
时,我得到了undefined
'结果length
返回结果3
var o = new obj();
console.log(o.length); // returns 3
console.log(o.len); // returns undefined
答案 0 :(得分:3)
defineProperty()
内的defineSym()
来电看起来很糟糕:
Object.defineProperty(this, syn , function() { return this[property]; });
这应该是:
Object.defineProperty(this, syn , { get: function() { return this[property]; } });