gpt4 book ai didi

javascript - 如何在对象中定义属性同义词?

转载 作者:行者123 更新时间:2023-11-28 19:41:13 26 4
gpt4 key购买 nike

我在 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

最佳答案

看起来您的 defineProperty() 调用在 defineSym() 中是错误的:

Object.defineProperty(this, syn , function() { return this[property]; });

这应该是:

Object.defineProperty(this, syn , { get: function() { return this[property]; } });

关于javascript - 如何在对象中定义属性同义词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24999588/

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