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!