Supongamos que tenemos el siguiente objeto:Añadir miembros a un objeto existente
var obj = {
fn1: function() {
}
}
cómo puedo dinámicamente añadir otro miembro a la misma, por ejemplo
fn2: function() {}
Supongamos que tenemos el siguiente objeto:Añadir miembros a un objeto existente
var obj = {
fn1: function() {
}
}
cómo puedo dinámicamente añadir otro miembro a la misma, por ejemplo
fn2: function() {}
Pruebe siguiente
var obj = {
fn1: function() {
}
}
obj.fn2 = function() {} // this will add another member to existing object
Espero que esto ayude.
Gracias!
Hussain.
puede utilizar prototipo para que ...
obj.prototype.fn2 = function() {
....
}
o simplemente
obj.fn2 = function() {
....
}
Es bastante simple en realidad:
obj.fn2 = function() { }
Como otros han señalado:
obj.fn2 = function(){ ... };
Tenga en cuenta que si "na2" no es un identificador válido, debe utilizar en su lugar la notación 'array' para el objeto:
obj["fn2"] = function(){ ... };
obj["!! crazy-names#allowed?!"] = function(){ ... };
Ésta es también la forma en que lo haría si tuviera el nombre de la bienes almacenados en una variable:
var propName = "fn2";
obj[propName] = function(){ ... };
Si desea probar si existe una propiedad de un objeto, se puede utilizar el operador de in
:
if ("fn2" in obj){ ... }
Si desea eliminar una propiedad de un objeto, utilice la palabra clave delete
:
var o = { a:42 };
console.log("a" in o); // true
delete o.a; // Or delete o["a"]
console.log("a" in o); // false
para iterar sobre todas las propiedades de un objeto, utilice el operador in
en un bucle. Asegúrese de var
la variable de modo que no es global:
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 minuciosidad – Ben
+1 por minuciosidad también. Otra cosa digna de mención es que si usted, como yo, desea usar el almacenamiento objeto-objeto, de la misma manera, primero debe verificar la existencia de la propiedad y, de no ser así, configurarlo con "obj [propName] = { } ", y luego puede repetir el proceso para" 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
no puede utilizar 'prototype' para esto. El prototipo solo se usa para los objetos creados con la palabra clave 'new', y solo las funciones (no los literales de los objetos) se pueden usar con la palabra clave' new'. –
Vaya, tienes razón. prototipo no funcionará con el objeto literal. –