Предположим, что мы имеем следующий объект:Добавление пользователей к существующему объекту
var obj = {
fn1: function() {
}
}
как я могу динамически добавить еще один элемент к нему, скажем,
fn2: function() {}
Предположим, что мы имеем следующий объект:Добавление пользователей к существующему объекту
var obj = {
fn1: function() {
}
}
как я могу динамически добавить еще один элемент к нему, скажем,
fn2: function() {}
Попробуйте следующие
var obj = {
fn1: function() {
}
}
obj.fn2 = function() {} // this will add another member to existing object
Надеюсь, это поможет.
Спасибо!
Hussain.
вы можете использовать прототип для этого ...
obj.prototype.fn2 = function() {
....
}
или просто
obj.fn2 = function() {
....
}
Это довольно просто на самом деле:
obj.fn2 = function() { }
Как уже отмечалось:
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 ]
+1 тщательность – Ben
+1 для тщательности также. Еще стоит отметить, что если вы, подобно мне, хотите использовать хранилище объектов в объекте одинаково, сначала нужно проверить наличие свойства, а если нет, установите его с помощью «obj [propName] = { } ", и вы можете повторить процесс для" obj [propName] [subPropName] " – David
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
Вы не можете использовать 'prototype' для этого. Прототип используется только для объектов, созданных с использованием ключевого слова 'new', и только функции (а не литералы объектов) могут использоваться с ключевым словом' new'. –
К сожалению, вы правы. прототип не будет работать с литералом объекта. –