添加属性/方法的最佳方法

时间:2015-01-18 08:00:16

标签: javascript jquery object methods properties

我厌倦了编写长对象属性/方法表达式,如下面的例子。逐个添加每个属性看起来像是按键的腰部。

var foo = function(object){
      object.foo = "foo";
      object.function = function(){};
      return object; 

}

我对它感到非常沮丧,我认为必须有更好的方法。经过一番思考后,我能想到的最好的事情就是addProperties循环函数,就像这样。

var addProperties = function(properties, subject){
    subject = subject ? subject : {};

    for(propertie in properties){
        if(properties.hasOwnProperty(propertie) && !subject[propertie]){
            subject[propertie] = properties[propertie]
        }
    }
    return subject;
}

这确实使代码更简洁:

var foo = function(object){
    return addProperties({foo : "foo", function : function(){}}, object); 
}

但我不满意!!

所以我转向你,堆栈溢出的好人:添加属性/方法的最佳方法是什么?(在您的个人观点中)

2 个答案:

答案 0 :(得分:1)

因为它用jQuery标记

var foo = function(obj){
    return $.extend(obj, {
       foo      : "foo",
       function : function(){}
    });
}

答案 1 :(得分:1)

...也许

var foo = {
    bar: 'bar',
    thatNamedFunction: function(){
        console.log('That named function of foo');
    },
    thatFunctionThatReturnsBar: function() {
        console.log('Returning bar');
        return this.bar;
    },
    thatFunctionThatManipulatesBar: function(newValue) {
        console.log('Bar will now be the newValue')
        this.bar = newValue;
    }
}