如何在JavaScript中应用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
这是一个对象,一般存在于函数中,表示当前函数的执行上下文;
值得一提的是,当函数在执行后,这才有绑定的对象,函数未执行时,这个没有内容
<>强普通函数强>
普通函数中的,普通函数中这个表的示调用此函数时的对象,如下例:
var x=11; var obj={ ,x: 22日 ,说:函数(){ console.log才能(this.x) ,} } obj.say ();//console.log输出的是22//调用说函数的是对象obj,所以这指代对象obj,输出的就是obj对象里的x值,即22。
<强>箭头函数强>
箭头函数中的,资料上说的箭头函数内部是没有这个的,也就是说,箭头函数里面的这个会继承自外部的,这下面有个例子,用来详细说明下:
var x=11; var obj={ ,x: 22日 y:这个,//窗 ,说:()=祝辞{ console.log才能(this.x); ,} } obj.say ();//输出的值为11 console.log (obj.y);//输出的值为窗口对象//obj对象中这个指的代的就是窗口,也就是全局环境,因为箭头函数中的这就会就近找到上一个对象中这所指代的对象,从以上例子可以看出来,obj内部属性y就为obj内部这指代的对象,输出是窗口。
由于箭头函数不绑定这个,它会捕获其所在(即定义的位置)上下文的这个值,作为自己的这个值,
1,所以电话()/应用()/bind()方法对于箭头函数来说只是传入参数,对它的这个毫无影响。
2,考虑到这是词法层面上的,严格模式中与这相关的规则都将被忽略。(可以忽略是否在严格模式下的影响)
因为箭头函数可以捕获其所在上下文的这个值所以
function 人(),{, this.age 才能=,0,, setInterval(才能(),=祝辞,{ ,,,//,回调里面的,“这个”,变量就指向了期望的那个对象了 ,,,this.age + +; ,,},3000); } var p =, new 人();
两个例子加深印象
<>强普通函数强>
var a=11 function test1 () { ,this.a=22; ,let b=function () { console.log才能(this.a); ,}; ,b (); } var x=new  test1 ();//输出11
为什么会输出11 ?因为普通函数中这个指的向的是调用它的对象,如果没有直接调用对象,会指向未定义或者窗口,一般都会指向窗口,在严格模式下才会指向定义。上述的例子中,并没有明确的调用对象,而普通函数中的这并不会向上继续找对象,所以直接返回窗口。
<强>箭头函数强>
var 一个=11; function test2 () { ,this.a=22; ,let b=()=祝辞{console.log (this.a)} ,b (); } var x=new  test2 ();//输出22
箭头函数中会往上寻找这个,直到找到所代表的这为止。例子中,构造函数被实例化成为一个对象x, x中那的这个指代的就是对象x本身,所以箭头函数这就代表x对象,x对象内部的一个值为22日,所以输出22。
总结
1,箭头函数中的这是在声明中就定义好了的,而普通函数中的这则是在调用时定义好的。
2,箭头函数不绑定这个,它会捕获其所在(即定义的位置)上下文的这个值,作为自己的这个值。正是因为它没有,所以也就不能用作构造函数。
3,若想改变这指向可以用绑定方法.bind方法在ES5引入,在函数的原型链上,Function.prototype。困境。通过绑定方法绑定后,函数将被永远绑定在其第一个参数对象上,而无论其在什么情况下被调用。
JavaScript是什么
JS是JavaScript的简称,它是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器的一部分,主要用于web的开发,可以给网站添加各种各样的动态效果,让网页更加美观。
关于如何在JavaScript中应用这个问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。