javascript - 在 Javascript 中定义对象

标签 javascript object

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

相关文章:

javascript - 错误错误 : Function DocumentReference. set() 使用无效数据调用。不支持的字段值:undefined(在字段activityId中找到)

javascript - div 在同一 body 内重叠另一个

JavaScript 重定向 URL

javascript - jQuery Cycle 插件 - 向前/向后幻灯片放映

java - 我们初始化我们的主对象,并在其构造函数中创建一个新对象。当我们销毁主要对象时,它的创建会发生什么?

new Object([])/new Object(new Array()) 的 JavaScript 构造函数

javascript - 在java中使用jsoup保存网页src和链接

javascript - 如何将多个数组转换为多个对象的一个​​数组?

javascript - 对同一函数使用不同的对象属性

java - 从多个不同类型的用户输入创建一个数组