Инициализируйте объект JavaScript, используя JSON - PullRequest
3 голосов
/ 14 апреля 2011

Я хочу сделать следующее

var my_json = {
    a : 'lemon',
    b : 1
}

function obj(json){
    this.a = 'apple';
    this.b = 0;
    this.c = 'other default';
}

после назначения

var instance = obj(my_json)

Я хочу получить

instance.a == 'lemon'

Ответы [ 2 ]

7 голосов
/ 14 апреля 2011
for(var key in json) {
    if(json.hasOwnProperty(key)) {
        this[key] = json[key];
    }
}

Блок if является необязательным, если вы точно знаете, что ничто не собирается расширять Object.prototype (что в любом случае плохо).

1 голос
/ 14 апреля 2011

Если вы хотите значения по умолчанию, как насчет;

function obj(json){
  var defaults = {
    a: 'apple',
    b: 0,
    c: 'other default'
  }

  for (var k in json)
    if (json.hasOwnProperty(k))
      defaults[k] = json[k];

  return defaults
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...