2013-04-14 5 views
2

Есть ли способ установить несколько переменных объекта одновременно. Например, у меня есть следующий код: естьУстановка нескольких переменных объекта в одно и то же время

_p.[{'a': 1, 'b': 2, 'c': 3}]; // this code does not do the trick 

ли способ сделать что-то вроде этого:

_p.a=1; 
_p.b=2; 
_p.c=3; 

То, что я хотел бы сделать что-то вроде следующего?

ответ

0

У вас есть объект _P и хотите exted его с помощью другого объекта - в вашем случае, буквальным.

JQuery есть утилита для этого:

http://api.jquery.com/jQuery.extend/

$.extend(_p, {'a': 1, 'b': 2, 'c': 3}); 

так же подчеркивания:

http://underscorejs.org/#extend

_.extend(_p, {'a': 1, 'b': 2, 'c': 3}) 
3

Вы можете использовать Object.defineProperties:

var _p = { 
    foo: 'bar' 
}; 
Object.defineProperties(_p, { 
    'a': { 
    value: 1, 
    writable: true, 
    enumerable: true 
    }, 
    'b': { 
    value: 2, 
    writable: true, 
    enumerable: true 
    }, 
    'c': { 
    value: 3, 
    writable: true, 
    enumerable: true 
    } 
}); 
console.log(_p); //Object {foo: "bar", a: 1, b: 2, c: 3} 
+0

+1 Обратите внимание, что это ECMA5, старые браузеры берегитесь. – Joseph

+0

Я думаю, что даже подумал, что это правильно, исходный код OP более читабельен. – sbichenko

0

Я думаю, вы могли бы использовать что-то вроде этого:

Object.prototype.setProps = function(props){ 
    for(var i in props){ 
     if(props.hasOwnProperty(i)) 
      this[i] = props[i]; 
    } 
} 

С:

_p.setProps({a: 1, b: 2, c: 3}); 
Смежные вопросы