箭头函数中的this是在定义函数的时候绑定,而不是在执行函数的时候绑定。这意味着箭头函数中的this指向定义时所在的作用域的this。具体来说: 箭头函数没有自己的this上下文,它继承外层函数的this值。 如果箭头函数是在全局作用域中定义的,那么它的this将指向全局对象(在浏览器中是window)。 如果箭头函数是在某个对象...
JavaScript在ES6语法中新增了箭头函数,相较于传统函数,箭头函数不仅更加简洁,而且在this方面进行了改进。this作为JavaScript中比较诡异的存在,许多文章对于this的解释也不尽相同,本篇文章试图厘清JS中函数与this的关系。 一、JS中函数的写法 1.常规函数的写法 在ES6语法之前,JS中的函数由function关键字、params参数和被...
2、箭头函数:无this,按照普通变量的方式向外侧寻找this; 箭头函数中所使用的this都是来自函数作用域链,它的取值遵循普通变量一样的规则,在函数作用域链中一层一层往上找。 func c:普通函数,this指向调用者obj func inner:箭头函数,无this,按照普通变量的方式寻找this,因此往外层找到了fun c内的this,为调用者:...
箭头函数的this指向,是父级程序的this指向 如果父级程序有this指向,指向向的就是父级程序的this指向 如果父级程序没有this指向(对象,数组是没有this),指向的是window2,箭头函数,无法改变this指向3,改变this指向 函数.call(参数1,其他参数...) 立即执行函数,并且改变函数的this指向为参数1表示的内容 其他参数,是...
箭头函数内的 this 指向外层的 this。 所以要知道箭头函数的 this 就得先知道外层 this 的指向,需要继续在外层应用七步口诀。 2. new 当使用 new 关键字调用函数时,函数中的 this 一定是 JS 创建的新对象。 读者可能会有疑问,“如果使用 new 关键调用箭头函数,是不是箭头函数的 this 就会被修改呢?”。
箭头函数的this指向 是 父级程序的this指向 如果没有父级程序 或者 父级程序没有指向 箭头函数的this指向是window (1)匿名函数绑定的事件处理函数 this指向默认是事件源 也就是div标签对象 oDiv.addEventListener('click' , function(){ console.log(this); ...
1、简化函数的定义 函数传递参数 简化函数执行上下文绑定的方式 this在js里面使用场景较多,切换也比较频繁,因此带来了各种运行时因为上下文切换导致的错误,如下代码: 由于使用了setTimeout在1000ms以后执行console中的内容,此时this已经不代表c对象的实例,此时this为全局的this,所以运行时候输出undefined。此种情况下传统的...
但是箭头函数的this却始终与外面直接输出的this指向是一致的,不管箭头函数被哪个类或者对象拥有。这也说明...
functionfoo(){console.log(this)}// 1 调用方式1foo();// 2 调用方式2 放入对象中调用varobj={name:"why",foo:foo}obj.foo()// 调用方式三 通过 call/apply 调用foo.call("abc") 指向定义 this 是js 给函数的一个绑定值。 函数在调用时 JavaScript会默认给this绑定一个值; ...
2. js 使用 addEventListener 绑定事件 此时的普通函数 this 指向该元素,箭头函数this指向window 点击 点击 functiona() { console.log(this);//点击}varb =()=>{ console.log(this);//window} document.getElementById('btn1').addEventListener('click',a); document....