有時候你以爲你知道的東西,然後把它原來你真的不知道......的JavaScript模塊模式不給予正確的instanceof
我已經做了很多的研究,JavaScript的繼承了最近幾天,我正在給當地一家技術集團發表演講。沒問題我想,我知道這個東西,我只是刷了...
原來,我還有很多東西要學。這是第一件讓我感到驚訝的事情:
function Vehicle() {
function move() {
console.log('moving');
}
return {move: move}
}
function OtherVehicle() {
this.alsoMove = function() {
console.log('also moving')
}
}
第一種方法是我一直理解的模塊模式。第二,雖然我不知道它的名字,但我明白它基本上是相同的 - 只是一個小的語法變體。
除外:
(new Vehicle()) instanceof Vehicle \\ returns false
(new OtherVehicle()) instanceof OtherVehicle \\ returns true
new Vehicle()
返回一個 '對象'。
看着這個,這是有道理的,但這不是我所期待的。 任何人都可以解釋這裏發生了什麼,爲什麼,也許指向我一個真正的好資源,進入這個膽量?
作爲後續。
var Car = function() {
function drive() { console.log('driving') };
return {drive: drive}
}
Car.prototype = new Vehicle() //I know, Object.create preferred
(new Car).move() //undefined
// However...
var Car = function() {
this.drive = function() { console.log('driving') };
}
Car.prototype = new Vehicle();
(new Car()).move() //output 'moving'
那麼,模塊模式不能用於繼承?
或者我今天剛剛從牀的錯誤位置醒來,應該在我下一次觸摸鍵盤之前進行一次運行?
謝謝。這是絕對有道理的。仍然覺得這些年來我一直在做錯事。不過,無論如何,繼承的構成,對吧? ;-) – JonRed
你打賭:-)(我是DI粉絲)。我知道你的意思 - 在使用它幾十年後(我絕不是專家),我仍然經常學習關於JavaScript的新東西。特別是現在NodeJS變得流行起來,它真的被剝奪了。 – Kenney