}; 在这段代码中,如果我把Dog.prototype.method = function(){}换成箭头函数,其他的不变,this.name就变成了undefined。当时使用nodejs和jsbin调试均是如此, 查了下此时arrow function中的this是global context,虽然知道这规则就是es6这样规定的,但是好奇心仍然得不到满足,今日偶然在知乎看见一个回答提到了更多信息。
当OuterFunction被调用时,它创建了一个新的对象实例,并且this在innerFunction和arrowFunction中都指向这个新创建的对象。 当我们直接调用obj.innerFunction()时,this指向了全局对象(在浏览器中是window),因此this.value是undefined,导致抛出一个错误。 然而,当我们调用obj.arrowFunction()时,即使我们是在外部调用的,arrow...
You can also use the arrow function to solve the issue of havingundefinedwhen using a function inside a method (as seen in Example 5). For example, constperson = {name:'Jack',age:25,// this inside method// this refers to the object itselfgreet() {console.log(this);console.log(this....
The JavaScript context object in which the current code is executing. this就是代码执行时当前的context object。 Global context In the global execution context (outside of any function), this refers to the global object whether in strict mode or not. 代码没有在任何函数中执行,而是在全局作用域中...
arrow function 箭头函数中的this 箭头函数 箭头函数是对正规函数的语法简化,它没有this、arguments等属性,也不能当作构造函数使用,在使用中尤其要注意箭头函数没有自己的this,它的this是绑定的父作用域上下文,箭头函数主要用在匿名函数的地方,写起来更简单,比如...
可以看到引擎在调用函数时要判断函数类型(FunctionKind),只要不是箭头函数(ArrowFunction)就会提供this绑定。箭头函数是个特例受到了特殊对待。 所以,this是属于执行上下文的一部分,同时也是引擎唯一一个暴露给外部JS代码用以访问当前执行上下文的通道,而引擎把箭头函数的通道给关了,表明引擎并不希望把箭头函数的执行上下文...
「In most cases, the value of this is determined by how a function is called.」「在大多数的情况下,this 其值取决于函数的调用方式。」好,如果上面两行就看得懂的话那么就不用再往下看了,Congratulations!… 我想应该不会,至少我光看这两行还是不懂。先来看个例子吧:var getGender = function()...
https://www.w3schools.com/js/js_this.asp 箭头函数-特殊的this ES2015 introduced arrow functions which don't provide their ownthisbinding (it retains thethisvalue of the enclosing lexical context). 箭头函数和普通函数匿名函数的this指向有所区别,其也没有自己的arguments object ...
function outerFunction() { return () => { console.log(this === window); // 输出 true }; } var arrowFunction = outerFunction(); arrowFunction(); 6. 注意事项 丢失的this:在一些情况下,this的值可能会丢失或产生意外的结果。 var obj = { ...
In the global execution context (outside of any function), this refers to the global object whether in strict mode or not. 代码没有在任何函数中执行,而是在全局作用域中执行时,this的值就是global对象,对于浏览器来说,this就是window。 这一条规则还是比较容易接受的。