0

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

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

然后,我像这样声明 SomeObject:

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

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

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

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

但是我怎样才能使用new关键字来创建一个可重用的对象类型,它是 BigObject 的一个属性。

谢谢。

4

3 回答 3

3

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

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

你所做的相当于:

var SomeObject = new Object();
SomeObject.SomeString = "";
SomeObject.SomeInt = 0;
于 2012-06-08T17:21:36.497 回答
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);
于 2012-06-08T17:21:22.723 回答
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
于 2012-06-08T17:23:56.537 回答