我有一个看起来像这样的对象:
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的一个属性。
感谢。
答案 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