Ответ 1
Как отмечали другие:
obj.fn2 = function(){ ... };
Обратите внимание, что если "fn2" не является допустимым идентификатором, вы должны вместо этого использовать обозначение "array" для объекта:
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 ]