偽古典繼承
它是使用原型繼承來模擬經典繼承 ,它展示了原型的強大程度。它的目的是使語言對來自其他語言的程式設計師更具吸引力。
Version < 6
重要說明 :由於語言模擬了傳統的類, 因此 ES6 使用偽 calssical 繼承是沒有意義的。如果你不使用 ES6,你應該 。如果你仍然想使用經典繼承模式並且你處於 ECMAScript 5 或更低版本的環境中,那麼偽經典是你最好的選擇。
class
只是一個用 new
運算元呼叫的函式,它被用作建構函式。
function Foo(id, name) {
this.id = id;
this.name = name;
}
var foo = new Foo(1, 'foo');
console.log(foo.id);
控制檯輸出
1
foo 是 Foo 的一個例項。JavaScript 編碼約定說如果函式以大寫字母開頭,它可以被稱為建構函式(使用 new
運算元)。
要向類新增屬性或方法,你必須將它們新增到它的原型中,該原型可以在建構函式的 prototype
屬性中找到。
Foo.prototype.bar = 'bar';
console.log(foo.bar);
控制檯輸出
bar
事實上,Foo 作為建構函式所做的只是使用 Foo.prototype
建立物件,因為它是原型。
你可以在每個物件上找到對其建構函式的引用
console.log(foo.constructor);
function Foo(id, name){…
console.log({ }.constructor);
function
Object()
{[native code]}
並且還使用 instanceof
運算子檢查物件是否是給定類的例項
console.log(foo instanceof Foo);
真正
console.log(foo instaceof Object);
真正