2013-05-17 5 views
-3

Вот мой код:Преобразования родового объекта в InstanceOf пользовательского объекта

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 как ожидается, будет сами объектами? Неужели в какой-то момент он должен стать примитивным?

Спасибо.

+0

Спасибо за что? Вы не задаете вопрос. Вы благодарите кого-то за то, что вы написали свой код для вас? –

+3

Я бы подумал, что после того, как задал 150 вопросов, вы бы знали, что это сообщение с очень низким качеством. Нет вопросов. Нет указаний на то, где у вас проблемы. Код размещен на другом сайте. Я имею в виду давай. По крайней мере, притворяйся, как будто тебе все равно. –

+0

@bfavaretto: IMO, вы не должны устанавливать вопросы для таких пользователей. Он был пользователем 4 года, 6 месяцев. Он должен быть в состоянии сделать это сам. * (Не обижайтесь на вас.) * –

ответ

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);