将通用对象转换为instanceof自定义对象

时间:2013-05-17 17:57:26

标签: javascript json object

这是我的代码:

function Apple (taste)
{
    this.t = taste || null; 
}

var x = new Apple("yummy");
var str = JSON.stringify(x);
var obj = JSON.parse(str);

console.log(str);
console.log(obj);

var t = Object.create(Apple, obj);

if (t instanceof Apple)
{
    console.log("its an apple");
}

console.log("end");

http://jsfiddle.net/tTvy5/

我无法弄清楚obj的成员本身应该是对象吗?当然它必须在某些时候成为原始人?

感谢。

1 个答案:

答案 0 :(得分:3)

看看documentation for Object.create。第二个参数不是对象本身,而是描述对象属性的对象。

因此,您需要一个描述var t = Object.create(Apple.prototype, obj);的对象,而不是obj。这样的事情可能会让你在那里:

var props = {};
for (var key in obj) {
    props[key] = { value: obj[key] };
}

var t = Object.create(Apple.prototype, props);