由于JavaScript语言设计者Brendan Eich所处的时代(1994年)面向对象编程兴盛,他也受到了影响,JavaScript里面的所有数据类型都是对象,但是他想要的是一个简易的脚本语言不想使其复杂化,因而他没有引入“类”,设计了“继承”机制来将所有对象联系起来。
JavaScript中没有“子类”和“父类”的概念,也没有“类”(class)和“实例”(instance)的区分,全靠一种很奇特的“原型链”(prototype chain)模式来实现继承。
function DOG(name){ this.name = name; } DOG.prototype = { species:'犬科'}; var dogA = new DOG('大毛'); var dogB = new DOG('二毛'); alert(dogA.species); alert(dogB.species);
显示结果为:
犬科
犬科
由于所有的实例对象共享同一个prototype对象,那么从外界看起来,prototype对象就好像是实例对象的原型,而实例对象则好像"继承"了prototype对象一样。这就是Javascript继承机制的设计思想。
摘自:http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html
转载于:https://blog.51cto.com/kaixinbocai/1180893