繼承簡介
在JS中繼承是一個非常複雜的話題,比其他任何物件導向語言中的繼承都複雜得多。在大多數其他物件導向語言中,繼承一個類別只需使用一個關鍵字即可。在JS中想要達到繼承公用成員的目的,需要採取一系列措施。 JS屬於原型式繼承,得益於這種靈活性,我們既可以使用標準的基於類別的繼承,也可以使用更微妙一些的原型式繼承。在JS中應該要明確一點,一切繼承都是透過prototype來進行的,且JS是基於物件來繼承的。
繼承:
function Animal(name){ this.name = name; this.showName = function(){ alert(this.name); } } function Cat(name){ Animal.call(this, name); } var cat = new Cat("Black Cat"); cat.showName();
Animal.call(this) 的意思是使用Animal物件取代this對象,那麼Cat中不就有Animal的所有屬性和方法了嗎,Cat物件就能夠直接呼叫Animal的方法以及屬性了.
多繼承:
function Class10() { this.showSub = function(a,b) { alert(a-b); } } function Class11() { this.showAdd = function(a,b) { alert(a+b); } } function Class2() { Class10.call(this); Class11.call(this); }
很簡單,使用兩個call 就實現多重繼承了
下面要跟大家介紹如何在JavaScript中實現簡單的繼承?
function Employee(name, sex, employeeID) { this.name = name; this.sex = sex; this.employeeID = employeeID; } // 将Employee的原型指向Person的一个实例 // 因为Person的实例可以调用Person原型中的方法, 所以Employee的实例也可以调用Person原型中的所有属性。 Employee.prototype = new Person(); Employee.prototype.getEmployeeID = function() { return this.employeeID; }; var zhang = new Employee("ZhangSan", "man", ""); console.log(zhang.getName()); // "ZhangSan