构造函数里的this,是什么意思啊
function fn(x){
this.x = x //这个this的用意是什么啊
}
var b = new fn(1)
console.log(b.x) //1
构造函数里的this,是什么意思啊
function fn(x){
this.x = x //这个this的用意是什么啊
}
var b = new fn(1)
console.log(b.x) //1
首先,在js中this不是在函数定义的时候确定的,而是在其被调用的时候确定的,即函数的调用方式决定了this指向
。
对于题主的这段代码,是以new 的当时来调用构造函数的,所以此段代码中的this指向的就是这个实例b,new 的时候传参1
,并且赋值给this,所以此时对于b来说,其有个属性x,值为1.
function fn(x){
this.x = x // 函数以new 的方式调用,此时指向new出来的实例
}
var b = new fn(1)
console.log(b.x) //1
具体可以参考:轻松搞定javascript中this的指向
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
凌晨开脑洞,试着写了个中(sàng)文(bìng)版:
运行结果:
简单来说呢,你把这个function近似看成是个对象的模板,this就是指向这个模板自带的附加属性的指针(相当于从外边能看到这个附加属性,起个搭桥的作用。这里你要用var那外边就没法访问了),每次用之前呢需要new个实例出来(不然谁知道找谁……不new的话,this没了方向,会直接指向window),放到变量里存着,顺便初始化一下,给这个附加属性赋个值,诶这就成了。
(最后声明下,以上Demo仅限于辅助理解,面试的时候敢这么说怕是要被打出来的哦。。)