你可以使用原型继承的模式是什么,你不能用class?

Geo*_*uer 15 javascript oop inheritance prototypal-inheritance

每个人似乎都普遍认为原型继承比类继承更简单,更灵活.我在文献中没有看到的,我读过很多关于原型继承的事情的例子,你不能用经典的东西.所以我提出一个简单的问题:

您可以使用原型继承的一些模式,您不能使用类继承,以及在何时/何时使用它时您将给出的指导是什么?

Geo*_*uer 1

好的,我将添加一个,利用原型链接对于整个对象类的猴子补丁方法来说是实时的这一事实:

var Cat = function(catName) {
    this.catName = catName;
};
Cat.prototype.meow = function() {
    console.log(this.catName+" says meow");
}
var mittens = new Cat("Mittens");
var whiskers = new Cat("Whiskers");
mittens.meow(); // "Mittens says meow"
whiskers.meow(); // "Whiskers says meow"

// All cats are now angry
Cat.prototype.meow = function() {
    console.log(this.catName+" says hissssss");
}
mittens.meow(); // "Mittens says hissssss"
whiskers.meow(); // "Whiskers says hissssss"
Run Code Online (Sandbox Code Playgroud)

如果您的对象突然需要开始以完全不同但一致的方式响应某种全局事件,这将很有用。也许是为了类似的事情:

  • 主题和皮肤
  • 页面是否在“在线模式”或“离线模式”下运行(在线时,所有查询都通过 ajax 存储/检索,而离线查询则重定向到浏览器存储)