-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のドキュメントを見てください。2 番目のパラメーターは、オブジェクト自体ではなく、オブジェクトのプロパティを記述するオブジェクトです。

の代わりに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 に答える