我正在使用一个对象原型,并且我想在构造过程中使用特定键将一个新属性附加到对象上,但我无法弄清楚如何做到这一点。
例如:
//define module prototype
Module = function () {
for (var i = 0; i < arguments.length; i++) {
//simplified (static) example of a resource that
//would realistically be dynamically generated here
//based on the arguments
var resource = {
name: 'example name',
value: 'string of text'
};
// ! this line returns an an error that 'resources' is not defined
// - this is supposed to be the definition of it.
this.resources[resource.name] = resource;
}
};
我的目标是:
var exampleModule = new Module('exampleInput');
返回一个对象:
{
resources : {
'example name' : {
//resource contents here
}
}
}
希望我的问题很清楚 - 我尝试使用密钥追加属性的问题是:
this.resources[resource.name] = resource;
答案 0 :(得分:2)
你需要做
this.resources = {};
首先,您无法向未定义的引用添加属性。
答案 1 :(得分:0)
在设置其属性之前,您需要将资源定义为Module的属性对象。在进入循环之前添加它:
this.resources = {}