function Book (){}
// Book 是一个函数
typeof Book
"function"
// Book 是 Function
Book instanceof Function
true
// Book 是 Object
Book instanceof Object
true
使用 new 可以建立物件
var book = new Book()
// book 是一个对象
typeof book
"object"
// book 不是 Function 的实例
book instanceof Function
false
// book 是 Object 的实例
book instanceof Object
true
// book 是 Book 的实例
book instanceof Book
true
javascript 中的任何函數只要用
new
關鍵字調用,它都可以被稱作構造函數
。當使用new 關鍵字呼叫函數時,函數內部會隱式地宣告一個對象,然後把這個物件賦給this,最後再隱式地返回this. 使用new 關鍵字呼叫樓主的book 方法時,就相當於以下過程。
這裡的 o 其實就是我們平常看到的 this 物件。
javascript 裡面沒有類,也沒有建構子。
使用
new
可以建立物件雖然 js 中沒有建構函數,但 MDN 文件中也使用了這個字:https://developer.mozilla.org...
即使 ES6 增加了類,也只是語法糖:
你理解錯了構造函數的概念。
實際上,js裡不應該有『建構子』這一說,而應該理解為函數的建構方法。意思是,任何函式都可以拿來
new
一個,任何函式都可以叫做『建構子』。你在寫所謂『構造函數』的時候,有發現它和普通函數有什麼差別嗎,並沒有吧,他們就是普通函數。以上,es6箭頭函數除外。
js裡面每個函數都是相當於一個建構子(除了真ES6箭頭函數)。
哎,神奇的js!