由于JavaScript函数对this绑定的错误处理,下面的例子无法得到预期结果: varobj ={ birth:1990, getAge:function() {varb =this.birth;//1990varfn =function() {returnnewDate().getFullYear() -this.birth;//this指向window或undefined};returnfn(); } }; 现在,箭头函数完全修复了this的指向,this总是指向...
绑定this:箭头函数没有自己的this,它继承自包含它的作用域的this值。这使得箭头函数更适合用作回调函数,因为它们不会改变this的值。 functionMyClass() {this.value=42;// 普通函数this.method1=function() {setTimeout(function() {console.log(this.value);// 输出 undefined},1000); };// 箭头函数this....
查了下此时arrow function中的this是global context,虽然知道这规则就是es6这样规定的,但是好奇心仍然得不到满足,今日偶然在知乎看见一个回答提到了更多信息。 原题是探讨关于this的缺陷的,其中 贺师俊 的回答提到: 1. JavaScript的this在直接调用时会是global,这是不是个错误? 答:是设计错误。所以ES5的strict模式改...
letfunc=function(arg1,arg2,...,argN){returnexpression;}; 我们看一个实际的例子: 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的值,并返回该...
Arrow functions (Function) – JavaScript 中文开发手册,[Arrowfunctions(Function)-JavaScript中文开发手册箭头函数表达式的语法比函数表达式更短,并且不绑定自己的this,arguments,super或 new.target。这些函数表达式最适合用于非方法函数,并且它们不能用作构造函数
newTarget正常调用下指向调用的function对象。比如foo(),newTarget就是foo,你可以在函数内部用new.target访问到。构造函数中的this对象与newTarget有关,如果newTarget.prototype存在,且是Object对象,则this就是ObjectCreate(newTarget.prototype),ObjectCreate是Object.create内部调用的方法,如果newTarget.prototype不存在或者...
箭头函数arrow function写法与规则 && this指向 一、JS中函数的写法 1.常规函数的写法 在ES6语法之前,JS中的函数由function关键字、params参数和被花括号包裹的函数体组成。为了与后面说到的箭头函数相区别,我们先把这样的函数叫做常规函数,常规函数既可以用声明式写法也可以用赋值式写法。例子:...
箭頭函數表示式 ( Arrow function expression ,也是所謂的 fat arrow function ) 比起一般的函數表示式擁有更短的語法以及詞彙上綁定 this 變數,所有的箭頭函數都是無名函數 (anonymous function).
代码语言:javascript 复制 constobj={name:'Alice',sayHi:()=>console.log(`Hello,${this.name}`)// this指向全局对象或undefined(严格模式)};// 应该使用普通函数或显式绑定thissayHi:function(){console.log(`Hello,${this.name}`);} 没有自己的arguments:箭头函数没有自己的arguments对象,使用剩余参数(....
// Example using a function expression function createObject() { console.log('Inside `createObject`:', this.foo); return { foo: 42, bar: function() { console.log('Inside `bar`:', this.foo); }, }; } createObject.call({foo: 21}).bar(); // override `this` inside createObject...