f2: [Function: fun2] }true*/在这里我们同时对比了普通函数和箭头函数的情况。可以看到普通函数在对象属性,类的静态属性或者实例属性执行时,this指向的值就是“拥有这个属性的对象”,我们在上面的章节讨论过。但是箭头函数的this却始终与外面直接输出的this指向是一致的,不管箭头函数被哪个类或者对象拥有。这也说明了箭头函
JavaScript在ES6语法中新增了箭头函数,相较于传统函数,箭头函数不仅更加简洁,而且在this方面进行了改进。this作为JavaScript中比较诡异的存在,许多文章对于this的解释也不尽相同,本篇文章试图厘清JS中函数与this的关系。 一、JS中函数的写法 1.常规函数的写法 在ES6语法之前,JS中的函数由function关键字、params参数和被...
从控制台中可以看出,箭头函数不能当做构造函数,所以不能与 new 一起执行。 3. bind 多次bind 时只认第一次 bind 的值 易错点 function func() { console.log(this) } func.bind(1).bind(2)() // 1 1. 2. 3. 4. 5. 箭头函数中 this 不会被修改 func = () => { // 这里 this 指向取决于...
add(1,2); function add(x,y){ return x + y; } 函数也算是一个变量,所以函数声明基本类似于变量声明(参见变量声明的提升),只是其不只提升了变量名,也提升了“赋值”(这个变量名在声明位置前已经代表了一个函数)。 ▉ 函数的作用域 函数的作用域基本类同于 var 声明的变量: ...
箭头函数的this指向 是 父级程序的this指向 如果没有父级程序 或者 父级程序没有指向 箭头函数的this指向是window (1)匿名函数绑定的事件处理函数 this指向默认是事件源 也就是div标签对象 oDiv.addEventListener('click' , function(){ console.log(this); ...
七、改变this指向的方法 1. call() call(a, b, c)方法接收三个参数,第一个是this指向,第二个,三个是传递给函数的实参,可以是数字,字符串,数组等类型的数据类型都可以。 示例: //定义函数functionfn(n1,n2){ console.log(this); console.log(n1,n2) ...
箭头函数的this指向在其定义时所在的上下文中的this。即使作为对象的属性值,箭头函数的this依旧指向定义时的上下文。例如:(function() { const arrowfunc = () => console.log(this) console.log('-- 外层作用域 --'); console.log(this); // String {'hello'} arrowfunc(); // String {...
箭头函数中没有 this 绑定,它的值必须通过查找作用域链来确定。如果箭头函数包含在非箭头函数中,则 this 绑定到最近的非箭头函数的 this 上,否则 this 的值设置为全局对象。例如: varname ='window';varstudent = {name:'dog',doSth:function()...
c: { d: { e: ()=>{console.log(this)} // Window } } } } var obj = { say: function () { console.log(this) setTimeout(() => { console.log(this) }); } } obj.say() // obj 为什么第二个会指向obj,而不是window?
function(number){ console.log(this.phrase,number) }.bind(this), ) }, } printNumbers.loop() 这将输出预期的结果: 当前值是: 1 当前值是: 2 当前值是: 3 当前值是: 4 箭头函数可以提供更直接的处理方式。由于它们的this值是根据词法范围确定的,因此内部函数forEach可以访问外部printNumbers对象的属性,...