【Web前端问题】关于一个this的问题

构造函数里的this,是什么意思啊

function fn(x){

this.x = x //这个this的用意是什么啊

}

var b = new fn(1)

console.log(b.x) //1

回答:

凌晨开脑洞,试着写了个中(sàng)文(bìng)版:

function 俺娃(娃大舅给起的名) {

this.叫啥 = 娃大舅给起的名; //this可以直接直译成“这娃”,嘿嘿嘿

}

var 俺家老大 = new 俺娃('大娃');

console.log(俺家老大.叫啥);

var 俺家老二 = new 俺娃('二娃');

console.log(俺家老二.叫啥);

var 俺家老五 = new 俺娃('五娃');

console.log(俺家老五.叫啥);

运行结果:

clipboard.png

clipboard.png


简单来说呢,你把这个function近似看成是个对象的模板,this就是指向这个模板自带的附加属性的指针(相当于从外边能看到这个附加属性,起个搭桥的作用。这里你要用var那外边就没法访问了),每次用之前呢需要new个实例出来(不然谁知道找谁……不new的话,this没了方向,会直接指向window),放到变量里存着,顺便初始化一下,给这个附加属性赋个值,诶这就成了。

(最后声明下,以上Demo仅限于辅助理解,面试的时候敢这么说怕是要被打出来的哦。。)

回答:

首先,在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的指向

回答:

函数声明的时候thiswindownew 的时候 将构造函数的作用域赋给了新对象,b 指向了这个对象,所以你可以理解成指向了b

回答:

参考:JavaScript 的 this 指向问题深度解析

回答:

楼上大神的建议已经很完善了,建议你采纳以后细细分析。

以上是 【Web前端问题】关于一个this的问题 的全部内容, 来源链接: utcz.com/a/140732.html

回到顶部