javascript的繼承一:只繼承于原型 在Javascript的面向對象的繼承中,每個構造函數(函數本身也是一個對象)都有一個PRototype屬性,該prototype屬性也是一個對象。將子對象的prototype屬性指向父對象的prototype屬性。這里是一個對象的拷貝,對象拷貝的實質是引用拷貝,即父對象的原型和子對象的原型是同一個對象的引用。即繼承關系所有對象的prototype都指向(引用)同一個對象,這必然導致對于原型鏈的查找是對一個原型對象的檢索,所以這種只基于原型的繼承方式增加了對象查找的效率。但是,缺點就是共享一個原型對象,那么子原型對象的屬性會覆蓋父原型對象的屬性,如本例中TwoDShape的那name屬性會覆蓋Shape的name屬性,如果使用Shape構造一個對象,它的name屬性也會變成“TwoDShape”。
//只基于原型的繼承function Shape(){}Shape.prototype.name = 'Shape'Shape.prototype.toString = function(){ return this.name;};function TwoDShpe(){}TwoDShpe.prototype = Shape.prototype;TwoDShpe.prototype.constructor = TwoDShpe;TwoDShpe.prototype.name = "TwoDShpe";function Triangle(side,height){ this.height = height; this.side = side;}Triangle.prototype = TwoDShpe.prototype;Triangle.prototype.constructor = Triangle;Triangle.prototype.name = "Triangle";Triangle.prototype.getArea = function(){ return this.side * this.height;};新聞熱點
疑難解答