2015-06-08 3 views
1

Вот мой код:Object.create не работает в функции

function Mammal(name){ 
    this.name = name; 
    this.offspring = []; 
} 

Mammal.prototype.sayHello = function(){ 
    return "My name is " + this.name + ", I'm a " + this.constructor.name; 
} 



function Cat(name, color){ 
    Mammal.call(this, name); 
    this.color = color; 
} 

Теперь, когда я называю Object.create от этой функции:

function extendWithObjectCreate(child, parent) { 
    child.prototype = Object.create(parent.prototype);  
    child.prototype.constructor = child; 
} 

Object.create не возвращает объект связанных с родительским прототипом.

Можете ли вы использовать Object.create внутри функции?

+2

Не могли бы вы объяснить, как вы называете 'extendWithObjectCreate'? –

+0

Как вы передаете 'child' и' parent' в 'extendWithObjectCreate'? –

+0

extendWithObjectCreate (Child, Mammal) – HelloWorld

ответ

0

Когда я делаю это, это выходит просто отлично:

function Mammal(name) { 
 
    this.name = name; 
 
    this.offspring = []; 
 
} 
 

 
Mammal.prototype.sayHello = function() { 
 
    return "My name is " + this.name + ", I'm a " + this.constructor.name; 
 
} 
 

 
function Cat(name, color) { 
 
    Mammal.call(this, name); 
 
    this.color = color; 
 
} 
 

 
function extendWithObjectCreate(child, parent) { 
 
    child.prototype = Object.create(parent.prototype);  
 
    child.prototype.constructor = child; 
 
} 
 

 
extendWithObjectCreate(Cat, Mammal); 
 

 
alert(new Cat('Muffin','blue').sayHello());

Прототип работает. Однако, поскольку Object.create() создает объект с прототипом , прототипы не задаются самим объектом. Итак, в то время как Cat.prototype.sayHello существует, Cat.prototype.hasOwnProperty('sayHello') является ложным.

+0

@ Qantas Chrome также имеет 'Object.hasOwnProperty'. – Scimonster

+0

Ах, я ошибся, у Firefox этого нет. Это не делает то, что вы думаете, что оно делает, поскольку оно будет называть его «Object», а не «Cat.prototype». –

+0

Ах. Тогда моя ошибка. Спасибо, что исправили его. – Scimonster

Смежные вопросы