Показать сообщение отдельно
  #1 (permalink)  
Старый 15.05.2015, 19:54
Интересующийся
Отправить личное сообщение для sexbot Посмотреть профиль Найти все сообщения от sexbot
 
Регистрация: 09.05.2015
Сообщений: 27

Что такого делает Object.create?
function Animal(name, sound) {
  this.name = name;
  this.sound = sound;
}

Animal.prototype.say = function() {
  console.log('%s says %s', this.name, this.sound);
};

function Cat() {
  Animal.call(this, "cat", "meow");
}

Cat.prototype = new Animal();
// Cat.prototype = Animal.prototype;
// Cat.prototype = Object.create(Animal.prototype);

var cat = new Cat();
cat.say(); // cat says meow

console.log(cat instanceof Cat); // true
console.log(cat instanceof Animal); // true
console.log(cat.constructor.name); // "Animal"?!


function inherit(Child, Parent) {
  Child.prototype = Object.create(Parent.prototype);
  Child.prototype.constructor = Child;
  Child.prototype.super = function() {
    Parent.apply(this, arguments);
  };
}

function Dog() {
  this.super("dog", "woof");
}

inherit(Dog, Animal);

var dog = new Dog;
dog.say();
console.log(dog.constructor.name);


Это код просто для примера. Мне непонятно почему при наследовании предпочтительнее делать `Child.prototype = Object.create(Parent.prototype)` вместо простого `Child.prototype = new Parent()`?
Ответить с цитированием