构造函数的实现原理
function Foo(name, age) {
console.log(this)
this.name = name
this.age = age
// return this //默认执行的一行
}
var f = new Foo('zhangsan', 20)
构造函数特点:函数名称大写。
new 构造函数的过程:首先传参数name和age,this先是空对象,如下图所示打印出来的this是个空对象。然后是属性的赋值,把name和age赋值给this。再把this给return回来,return this这句是默认执行的。最后,this值 return回来后赋值给f。这个时候f就具备了f.name = 'shangsan',f.age=20这些属性。
构造函数扩展
- var a = {} 其实是var a = new Object()的语法糖
- var b = [] 其实是var b = new Array()的语法糖
- function Foo(){...}其实是var Foo = new Function(...)
- 使用instanceof 判断一个函数是否是一个变量的构造函数
a 的构造函数是Object,b的构造函数是Array, Foo的构造函数是Function。
- 如果判断一个变量是不是数组?
变量 instanceof Array