目前我正在读一本关于OO / PB JS的书。 在继承方面,描述了几种不同的方式。
下面我贴了两种不同的方法。 第二个版本大部分时间都在本书中使用。 我无法理解为什么,因为第一个似乎更优雅,因为没有像第二个版本中使用的过时功能F. 谁能告诉我第二个版本的优势或者为什么它存在?
版本1:
function Shape() {}
Shape.prototype.name = 'Shape';
Shape.prototype.toString = function() {
return this.name;
};
function Triangle(side, height) {
this.side = side;
this.height = height;
}
Triangle.prototype = new Shape();
Triangle.prototype.constructor = Triangle;
Triangle.prototype.name = 'Triangle';
Triangle.prototype.getArea = function() {
return this.side * this.height / 2;
};
var myTriangle = new Triangle(5, 10);
第2版:
function Shape() {}
Shape.prototype.name = 'Shape';
Shape.prototype.toString = function() {
return this.name;
};
function Triangle(side, height) {
this.side = side;
this.height = height;
}
function F() {};
F.prototype = Shape.prototype;
Triangle.prototype = new F();
Triangle.prototype.constructor = Triangle;
Triangle.prototype.name = 'Triangle';
Triangle.prototype.getArea = function() {
return this.side * this.height / 2;
};
var myTriangle = new Triangle(5, 10);