使用JSON初始化JavaScript对象

Dan*_*Dan 3 javascript json

我想做以下事情

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

function obj(json){
    this.a = 'apple';
    this.b = 0;
    this.c = 'other default';
}
Run Code Online (Sandbox Code Playgroud)

分配后

var instance = obj(my_json)
Run Code Online (Sandbox Code Playgroud)

我想得到

instance.a == 'lemon'
Run Code Online (Sandbox Code Playgroud)

Thi*_*ter 7

for(var key in json) {
    if(json.hasOwnProperty(key)) {
        this[key] = json[key];
    }
}
Run Code Online (Sandbox Code Playgroud)

if如果你确定没有任何东西可以扩展Object.prototype(这无论如何都是坏事),那么该块是可选的.

  • 如果扩展`Object.prototype`,迭代对象将包括你添加到原型的属性,这很可能不是你在迭代来自JSON的对象时所需的属性.如果属性来自原型,则`hasOwnProperty`检查将失败,因此它将防止破坏,因为只有传递对象中实际存在的属性才会被复制到对象中. (2认同)