先来看一段代码
function fun() {
this.name = 'zhd'
}
let p = new fun()
console.log(p.name)
最终控制台打印出来的是zhd,这个我相信大多数人都是知道这个结果的,但问题是为什么会打印出zhd,或许很多人并不清楚里面的代码究竟做了什么操作,接下来我们讲讲其中的原理。
其实new Function()也属于JavaScript中调用一个函数的一种调用方式,只不过开发中我们很少会用到,使用new Function()调用函数的过程中会在函数内部自动帮我们生成一个新的对象obj,生成这个obj的过程中会自动把这个函数内部的this赋值给我们这个obj对象
function fun() {
var obj = {}
obj = this
this.name = 'zhd'
return obj
}
等到最后函数内的代码执行完后会自动把我们的这个this return返回出来,之后就可以通过p拿到这个函数返回来的这个对象obj,接着就可以拿到obj里面的name属性了。
用官方一点的话来说这个例子,我们通过一个new关键字调用一个函数时(构造器),这个时候this是在调用这个构造器时创建出来的对象,创建出来的对象 = this,这个this的绑定过程也称为new绑定。
前端菜鸟一枚,大佬勿喷…