À L'Aide De L'Objet.attribuer et de l'Objet.créer pour l'héritage

J'ai généralement de mettre en œuvre l'héritage le long des lignes suivantes.

function Animal () { this.x = 0; this.y = 0;}

Animal.prototype.locate = function() { 
  console.log(this.x, this.y);
  return this;
};
Animal.prototype.move = function(x, y) {
  this.x = this.x + x;
  this.y = this.y + y; 
  return this;
}


function Duck () {
    Animal.call(this);
}

Duck.prototype = new Animal();
Duck.prototype.constructor = Duck;
Duck.prototype.speak = function () {
    console.log("quack");
    return this;
}

var daffy = new Duck();

daffy.move(6, 7).locate().speak();

J'ai lu ce post par Eric Elliott et si j'ai bien compris je peux utiliser Object.create et Object.assign à la place? Est-ce vraiment si simple?

var animal = {
   x : 0,
   y : 0,
   locate : function () { 
     console.log(this.x, this.y);
     return this;
   },
   move : function (x, y) { 
     this.x = this.x + x; 
     this.y = this.y + y;
     return this;
   }
}

var duck = function () {
   return Object.assign(Object.create(animal), {
     speak : function () { 
       console.log("quack");
       return this;
     }
   });
}

var daffy = duck();

daffy.move(6, 7).locate().speak();

Que d'un côté, par convention constructeur fonctions sont capitalisés, devrait objet littéraux de cette loi que les constructeurs également être capitalisés?

J'ai réaliser il y a beaucoup de questions à discuter new contre Object.create, mais en général, ils semblent se rapporter à l' Duck.prototype = new Animal(); contre Duck.prototype = Object.create(Animal.prototype);

Si vous utilisez ES2015, vous devriez être en utilisant class & extend
ça n'est évidemment pas la question qu'il a posée. Si l'utilisation de class et extend est une bonne idée est partie d'un autre débat.
dois-je utiliser class et extend? Si je fais ce que je finis par avoir à utiliser new n'est-ce pas? Quels sont les avantages d'utiliser class et extend ont plus de Object.assign(Object.create(...?
J'ai ajouté de l'ES6 tag dans ce depuis la principale question est de puis-je utiliser l'Objet.créer et Objet.attribuer.
Suivant ce modèle vous préférez var duck = Object.assign(Object.create et var daffy = Object.create(duck).

OriginalL'auteur user5325596 | 2015-11-13