2011-01-05 3 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'. –

+0

К сожалению, вы правы. прототип не будет работать с литералом объекта. –

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 в цикле. Обязательно 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

+0

+1 для тщательности также. Еще стоит отметить, что если вы, подобно мне, хотите использовать хранилище объектов в объекте одинаково, сначала нужно проверить наличие свойства, а если нет, установите его с помощью «obj [propName] = { } ", и вы можете повторить процесс для" obj [propName] [subPropName] " – David

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 
Смежные вопросы