-4

这是我的代码:

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本身应该是对象吗?当然,它必须在某个时候变成原语吗?

谢谢。

4

1 回答 1

3

查看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);
于 2013-05-17T18:07:43.987 回答