普通函数与构造函数最大的区别就是this指向问题
普通函数this指向全局对象window
构造函数this指向实例化对象本身
例:
function Demo() {
console.log(this)
}
Demo()//这里可以看到this指向window
let f=new Demo()//这里可以看到构造函数this指向它实例化的对象f。(普通函数与构造函数就是有没有用new )
this指向是可以改变的这里分享三种方法call() apply() bind()
let obj={}
Demo.call(obj) //this指向obj 改变this指向 立即执行
Demo.apply(obj)//this指向obj 改变this指向 立即执行 如果传参的话 参数放到数组里
Demo.bind(obj)//this指向obj 改变this指向 不立即执行
Demo.bind(obj)()
let p=Demo.bind(obj)
p()//执行新的函数