箭头函数内的 this 指向外层的 this。 所以要知道箭头函数的 this 就得先知道外层 this 的指向,需要继续在外层应用七步口诀。 2. new 当使用 new 关键字调用函数时,函数中的 this 一定是 JS 创建的新对象。 读者可能会有疑问,“如果使用 new 关键调用箭头函数,是不是箭头函数的 this 就会被修改呢?”。 我们...
在这段代码中,如果我把Dog.prototype.method = function(){}换成箭头函数,其他的不变,this.name就变成了undefined。当时使用nodejs和jsbin调试均是如此, 查了下此时arrow function中的this是global context,虽然知道这规则就是es6这样规定的,但是好奇心仍然得不到满足,今日偶然在知乎看见一个回答提到了更多信息。 ...
f是箭头函数,箭头函数没有this,它的this是绑定了父作用域(全局作用域)上下文,父作用域的a="hi",所以输出hi。 通过babel编译一下,更能看出箭头函数的本质,能很直观的看出箭头函数的this绑定的事父作用域。 var _this = void 0; var obj = { f: function f() { console.log(_this.a); } }; (void ...
所以在非严格模式下,通过上面七步口诀,如果得出 this 指向是 undefined 或 null,那么 this 会指向全局对象。在浏览器环境中全局对象是 Window,在 Node.js 环境中是 Global。 例如下面的代码,在非严格模式下,this 都指向全局对象。 点击查看代码 functiona(){ console.log("function a:", this) ;(() => { ...
ES6中提供了Arrow Function(箭头函数):箭头函数没有自己的this,它的this是继承所在上下文中的this letobj={func:function(){console.log(this)// obj},sum:()=>{console.log(this)// window,块级上下文中没有自己的this}} 可以基于call/apply/bind方式,强制手动改变函数中this的指向 ...
letsum=(a,b)=>a+b;/* This arrow function is a shorter form of:let sum = function(a, b) {return a + b;};*/alert(sum(1,2));// 3 上述的例子在中,在等号的右边,箭头函数计算了a+b的值,并返回该值。需要注意的是,这里赋值给sum的是函数本身,而不是函数计算后的值,换句话说,这里sum...
箭头函数不可以使用bind, call , applay来改变this指向 arrow的作用域是构造函数Test的作用域,Test的作用域是实例化时候的作用域 箭头函数内部的this,取决于它所在的父级的上下文的this指向,new Test() 的时候,this指向实例,所以是“test function” (2)箭头函数的使用场景 ...
箭头函数的this指向在其定义时所在的上下文中的this。即使作为对象的属性值,箭头函数的this依旧指向定义时的上下文。例如:(function() { const arrowfunc = () => console.log(this) console.log('-- 外层作用域 --'); console.log(this); // String {'hello'} arrowfunc(); // String {...
函数调用(Function Invocation) 函数会在调用表达式中被调用。括号中的表达式会被计算,并且结果的值会作为 arguments 传入函数作为其参数。调用表达式的值就是函数的返回值。若没有返回值时为 undefined。 在非严格模式中调用函数时,调用上下文(this 的值)是全局对戏;在严格模式中,调用上下文则是 undefined。注意箭头函...
因为书中对于arrow function中this的解释,我也不是很理解。...当我们调用arrow functions时,它们没有自己的隐式的this参数;它们只记得 在创建它们时 this参数的值。...不管`新的function`是以何种方式被调用的,在该`新的function`中 `this`的值永远都是传入...