1. 程式人生 > >JS繼承之寄生繼承

JS繼承之寄生繼承

JavaScript繼承還有一種繼承模式——寄生繼承。
舉個例子:

function object(o) {
  function F() {};
  F.prototype = o;
  return new F();
}
var twoD = {
  name: '2D shape',
  dimensions: 2
}
function triangle(s, h) {
  var that = object(twoD);
  that.name = 'Triangle';
  that.getArea = function() {return this.side*this
.height / 2;} that.side = s; that.height = h; return that; } var a = triangle(2,16); a.dimensions

寄生繼承首先將一個普通物件twoD克隆進一個叫that的物件,然後擴充套件that物件,新增更多的屬性,最後返回that物件。這種寄生繼承就是對原型繼承的第二次封裝,並且在這第二次封裝過程中對繼承的物件進行了拓展,這項新建立的物件不僅僅有父類中的屬性和方法而且還有新新增的屬性和方法。