2011-01-05 74 views

回答

5

试试以下

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

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

希望这会有所帮助。

谢谢!

Hussain。

-2

你可以使用原型为...

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

或者只是

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

不能使用'prototype'这一点。原型仅用于使用'new'关键字创建的对象,并且只有函数(不是对象文字)可以与'new'关键字一起使用。 – 2011-01-05 05:22:56

+0

糟糕,你是对的。原型将无法使用对象字面值。 – 2011-01-08 03:23:28

5

这是很简单的实际上是:

obj.fn2 = function() { } 
38

正如其他人所指出的:

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 

要在对象遍历所有属性,使用in运营商在for循环中。一定要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 ] 
+0

+1彻底性 – Ben 2011-01-05 05:21:37

+0

为了彻底性,以及。另一件值得注意的事情是,如果你像我一样想要以相同方式使用对象内对象存储,则应首先检查该对象的存在,如果不存在,则将其设置为“obj [propName] = { }“,然后您可以重复”obj [propName] [subPropName]“的过程 – David 2013-11-05 16:36:42

0
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