在对象构造函数中,如何使用自定义键值附加属性?

时间:2015-01-21 19:41:20

标签: javascript prototype

我正在使用一个对象原型,并且我想在构造过程中使用特定键将一个新属性附加到对象上,但我无法弄清楚如何做到这一点。

例如:

//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;

2 个答案:

答案 0 :(得分:2)

你需要做

this.resources = {};

首先,您无法向未定义的引用添加属性。

答案 1 :(得分:0)

在设置其属性之前,您需要将资源定义为Module的属性对象。在进入循环之前添加它:

this.resources = {}