相对较新的JavaScript,因此想知道实现以下要求的最佳方法是什么。 我想创建JSON对象(RPC请求对象),并需要强制执行某些结构。据我所知,JS是动态语言,因此我可以随时向对象添加任何类型。但是,我喜欢定义一个类,我可以填充它来构造JSON请求。
var RecReq = {
ID:{},
HeaderLevel:{},
Content:{} //Content object goes here
},
HeaderLevel = {
HeaderID:{},
Note:{}
},
Content = {
Item: [] //Array of Item goes here
},
Item = {
IDs:[]
};
function ReceiveObj() {
this.RecReq = RecReq,
this.HeaderLevel = HeaderLevel,
this.Content = Content,
this.Item = Item
};
return new ReceiveObj();
我确信上面的代码有很多问题。我不认为该对象是在初始化数组的情况下创建的。
在返回的对象上,我无法执行push()
操作以将iten插入到Content。
你会如何处理这个问题。您是在动态创建对象,还是更好地定义强制某种结构的对象。
答案 0 :(得分:1)
如果你的代码建议,你希望你的实例继承外部对象,一种方法就是分配'class'的原型(小心在JS中用类的术语思考 - 它不是一个类中的Java等感觉到对象。
var obj = {
prop_1: 'foo',
prop_1: 'bar'
}
function Something() {
alert(this.prop_1); //alerts "foo"
}
Something.prototype = obj;
var something = new Something();
这只是一种方式。有很多模式可以控制继承(以及其他可以实现你想要的模式,甚至不用接近继承的概念)。
至于push()
无效,在您的代码中,Content
是一个对象,而push()
是Array
原型的一种方法。换句话说,您只能push()
进入数组。也许你的意思是Content.Item
,这是一个数组。
最后,我会避免大写名字。在JavaScript中,这往往只使用类模拟中使用的函数(如ReceiveObj)来表示它们应该被实例化,而不仅仅是被调用。