javascript将新对象指定为对象属性

时间:2012-06-08 17:18:46

标签: javascript

我有一个看起来像这样的对象:

var BigObject = {
    'CurrentInt': 0,
    'CurrentBool': false,
    'CurrentObject': {}
}

然后,我宣布像这样的SomeObject:

var SomeObject = {
      'SomeString': "",
      'SomeInt': 0
}

这两个定义适用于处于初始状态的对象,有点像我猜的类型定义。现在我想将new SomeObject分配给BigObject['CurrentObject']。我试过这个:

BigObject['CurrentObject'] = new SomeObject();

但它不起作用。目前,我只是通过引用BigObject['CurrentObject'] = SomeObject;进行直接赋值,然后当我需要重置SomeObject的值时,我只运行一个函数,在其初始阶段重新声明SomeObject的每个属性。

但是如何使用new关键字创建一个可重用的对象类型,它是BigObject的一个属性。

感谢。

3 个答案:

答案 0 :(得分:3)

new只能与函数一起使用,以将其作为构造函数运行:

function SomeObject() {
    this.SomeString = "";
    this.SomeInt = 0;
}

你所做的相当于:

var SomeObject = new Object();
SomeObject.SomeString = "";
SomeObject.SomeInt = 0;

答案 1 :(得分:2)

如果要定义类型,则应使用构造函数:

var SomeObject = function() {
    this.someString = "";
    this.someInt = 0;
}

var BigObject = function() {
    this.currentInt = 0;
    this.currentBool = false;
    this.currentObject = new SomeObject();
}

一旦定义了这些构造函数,就可以new它们(创建实例):

var myBigObject = new BigObject();
console.log(myBigObject.currentObject);

答案 2 :(得分:1)

使用JavaScript类。

function SomeObject() { }
SomeObject.prototype.someString = "";
SomeObject.prototype.someInt = 0;

function BigObject(){ this.currentObj = new SomeObject; }
BigObject.prototype.currentInt = 0;
BigObject.prototype.currentBool = false;
BigObject.prototype.currentObj = null;

var a = new BigObject;

a.currentObj instanceof SomeObject;  // true