我先试过这个-
const profile = {
name: 'Alex',
getName: function(){
return this.name;
}
};
很好用。现在我用胖箭做了同样的事情。在这种情况下,“this”是未定义的。
const profile = {
name: 'Alex',
getName: () => {
return this.name;
}
};
与常规函数不同,箭头函数没有自己的this
,只有常规函数和全局作用域有自己的this
。
这意味着每当箭头函数中引用this
时,它将开始查找作用域以查找this
的值,或者在本例中,在查找过程中,它发现对象
没有自己的this
,因此,它进入全局作用域并将this
的值与全局作用域绑定,在全局作用域中它不会找到任何东西。这两个例子会解决你的疑问。
var obj = {
a : 'object???',
foo : () => { console.log(this.a) }
};
var a = 'global!!!';
obj.foo(); // global!!!
函数中的换行箭头
var obj = {
a : 'object???',
foo : function() {
return (() => {
console.log(this.a)
})();
}
};
var a = 'global!!!';
obj.foo();
https://github.com/anirudh-modi/js-Essentials/blob/master/es2015/functions/arrow%20functions.md#how-this-is-interfire-for-arrow-functions
我正在尝试使用JS SDK在Dropbox上上传一个文件。下面是我试图调用函数的html代码: 这是定义函数的文件 但是,由于我不知道的原因,我的函数不能被调用。我得到错误“referenceerror:Dropupload is not defined”,我不知道这是否与问题有关,但我得到另一个错误:“syntaxerror:import declarations may only at top
问题内容: 我正在使用Vue.js创建一个组件。 当我引用中的任何所述的生命周期钩(,,等等)它的计算结果为: 我的计算属性内部也发生了同样的事情: 我收到以下错误: 未捕获的TypeError:无法读取未定义的属性“ bar” 为什么要在这些情况下进行评估? 问题答案: 这两个示例都使用arrow函数,该函数绑定到与Vue实例不同的上下文。 根据文档: 不要在实例属性或回调(例如)上使用箭头功能
在下面的代码中 为什么当console.log(x)时,x是未定义的?
我在chrome控制台中写了这样的表达式: 它返回:
我正在阅读ScrollListView的源代码,在一些地方我看到了的用法。 88号线。 这是的缩写吗?如果有什么不同,又是怎么回事?
问题内容: 在严格模式下使用javascript时,为什么在匿名函数中未定义此函数?我知道为什么这样做可能有意义,但是我找不到任何具体答案。 例: 问题答案: 这是因为,在ECMAscript 262第5版之前,如果使用的人忘记使用该关键字,那会造成很大的混乱。如果在ES3中调用构造函数时忘了使用,请引用全局对象(在浏览器中),然后用变量破坏全局对象。 这是可怕的行为等人在ECMA决定,只是为了集