gpt4 book ai didi

javascript - 在 Javascript 中定义对象

转载 作者:行者123 更新时间:2023-11-29 18:29:48 24 4
gpt4 key购买 nike

我想在 javascript 中定义以下对象:

var property = 'foo';
var value = 'bar';
var obj = {
property: value;
};

这将导致以下结果:

obj.property <-> 'bar';
obj.foo <-> undefined

这很正常,但是如何定义要获取的对象:

obj.foo = 'bar';

可能的解决方案是:

var obj = {};
obj[property] = value;

var obj = new Object();
obj[property] = value;

但是当必须定义像这样的对象时,这是不方便的:

var obj = {
o1: {
oo1: {
property: value;
}
}
};

同样,我想要的是:

var property = 'foo';
var value = 'bar';
var obj = {
property: value;
};
alert(obj.foo); // I want this to alert: 'bar'

您如何处理类似情况?谢谢!

最佳答案

如果我理解正确的话,您想在对象的构造函数中使用全局范围内的多个级别的变量。除此之外,客气地说是有风险的,因为实际上不可能确定这些变量的值,您可以像这样指定范围:

var property = 'foo';
var value = 'bar';
var obj = {val : window.value};//doesn't work for property id's
var obj[window.property] = obj.val;
alert(obj.foo);//alerts 'bar'

或者,让你的构造函数接受参数:

function Foobar(prop,val)
{
this[prop] = val;
}
var obj = new Foobar('foo','bar');
alert(obj.foo);//alerts 'bar'

在我的第二个例子中,嵌套对象可以像这样使用传递给它们的“父”/包含对象的参数:

function Foobar(prop,val)
{
Foobar.prop = prop;
Foobar.val = val;
...
this.subObj = {};
this.subObj[Foobar.prop] = Foobar.val;//var prop from scope Foobar, same as window
}

利用函数或对象的变量可以静态化这一事实,您甚至可以这样做:

Foobar.prop = (typeof Foobar.prop !== 'undefined' ? Foobar.prop : prop);
//or
Foobar.subObj= {new Foobar};//extending parent object
Foobar.subObj.newProp = 'newVal';

关于javascript - 在 Javascript 中定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9529906/

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