将成员添加到现有对象

时间:2011-01-05 05:10:37

标签: javascript

假设我们有以下对象:

var obj = {
    fn1: function() {
    }
}

如何动态添加其他成员,比如说

fn2: function() {}

5 个答案:

答案 0 :(得分:47)

正如其他人所指出的那样:

obj.fn2 = function(){ ... };

请注意,如果“fn2”不是有效的标识符,则必须使用对象的“数组”表示法:

obj["fn2"] = function(){ ... };
obj["!! crazy-names#allowed?!"] = function(){ ... };

如果您将属性的名称存储在变量中,也可以这样做:

var propName = "fn2";
obj[propName] = function(){ ... };

如果要测试对象是否存在属性,可以使用in运算符:

if ("fn2" in obj){ ... }

如果要从对象中删除属性,请使用delete关键字:

var o = { a:42 };
console.log( "a" in o ); // true
delete o.a;              // Or delete o["a"]
console.log( "a" in o ); // false

要迭代对象中的所有属性,请在for循环中使用in运算符。请务必var变量,使其不是全局变量:

var o = { a:42, b:17 };
var allPropertyNames  = [];
var allPropertyValues = [];
for (var propName in o){
  // If you don't do this test, propName might be a property inherited
  // by this object, and not a property on the object itself.
  if (o.hasOwnProperty(propName)){
    allPropertyNames.push(propName);
    allPropertyValues.push(o[propName]);
  }
}
console.log( allPropertyNames );  // [ "a", "z" ]
console.log( allPropertyValues ); // [ 42, 17 ]

答案 1 :(得分:7)

实际上很简单:

obj.fn2 = function() { }

答案 2 :(得分:6)

试试以下

var obj = {
   fn1: function() {
   } 
}

obj.fn2 = function() {} // this will add another member to existing object

希望这会有所帮助。

谢谢!

侯赛因。

答案 3 :(得分:2)

var obj = { };

// Adding function by extending the object using dot notation

obj.subtract = function(num1,num2){
    return num1 - num2;
};

console.log(obj.subtract(8,5));//3

//Adding function by extending the object using bracket notation

obj['multiply them'] = function(num1,num2){

    return num1 * num2 ;

};

console.log(obj[' multiply them '](3,3)); // 9

答案 4 :(得分:-1)

你可以使用原型......

obj.prototype.fn2 = function() {
 ....
}

或只是简单地

obj.fn2 = function() {
 ....
}