JavaScript日常总结20200603-构造函数

220 阅读1分钟

构造函数的实现原理

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