繼承的方式
ECMAScript 實現繼承的方式不止一種。這是因為 JavaScript 中的繼承機制并不是明確規定的,而是通過模仿實現的。這意味著所有的繼承細節并非完全由解釋程序處理。作為開發者,你有權決定最適用的繼承方式。最原始的繼承實現方式就是對象冒充,下面著重介紹該方法。
對象冒充
對象冒充實現繼承的核心其實依賴于在函數環境中使用 this 關鍵字。其原理如下:構造函數使用 this 關鍵字給所有屬性和方法賦值(即采用類聲明的構造函數方式)。因為構造函數只是一個函數,所以可使 ClassA 構造函數成為 ClassB 的方法,然后調用它。ClassB 就會收到 ClassA 的構造函數中定義的屬性和方法。例如,用下面的方式定義 ClassA 和 ClassB:
function ClassB(sColor) {
}
所有新屬性和新方法都必須在刪除了新方法的代碼行后定義。否則,可能會覆蓋超類的相關屬性和方法:
this.name = sName;
this.sayName = function () {
alert(this.name);
};
}
this.newMethod = ClassY;
this.newMethod();
delete this.newMethod;
}
由于這種繼承方法的流行,ECMAScript 的第三版為 Function 對象加入了兩個方法,即 call() 和 apply()。后來很多衍生出來的實現繼承的方法其實也是基于call() 和 apply()來實現的。
新聞熱點
疑難解答