Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两个箭头函数之间的区别是什么?_Javascript_Ecmascript 6_Arrow Functions - Fatal编程技术网

Javascript 两个箭头函数之间的区别是什么?

Javascript 两个箭头函数之间的区别是什么?,javascript,ecmascript-6,arrow-functions,Javascript,Ecmascript 6,Arrow Functions,我理解箭头函数中的“this”在上面的执行上下文中指向这一点 变量名称='aaa'; const person={ 名称:“bbb”, getName:=>{return console.logthis.name} } person.getName; 通过这种方式,您已经定义了一个对象名person,它有两个属性name和getName。name的类型是字符串,而getName的类型是函数箭头函数。普通函数和箭头函数的区别之一是使用此关键字的方式 由于person是一个对象而不是函数,因此无法

我理解箭头函数中的“this”在上面的执行上下文中指向这一点

变量名称='aaa'; const person={ 名称:“bbb”, getName:=>{return console.logthis.name} } person.getName; 通过这种方式,您已经定义了一个对象名person,它有两个属性name和getName。name的类型是字符串,而getName的类型是函数箭头函数。普通函数和箭头函数的区别之一是使用此关键字的方式

由于person是一个对象而不是函数,因此无法创建此对象的新实例:

var p = new person(); // Error: person is not a constructor
否则,如果人是一个函数

const Person = function() {
    this.name = 'bbb';
    this.getName = () => {return console.log(this.name)}
}
然后,您可以创建它的新实例:

const test = new Person();
这个函数也有两个属性。这两个属性的类型与第一个属性的类型相同

对于您的问题,我建议您在函数中检查此对象:

const person={ 名称:“bbb”, getName:=>{console.logthis} } person.getName 此in-arrow函数由封闭的词法上下文定义。常规对象不定义对象的此局部。因此,查找将继续向外,您将获得全局对象。另一方面,当您将新操作符与函数一起使用时,它会创建一个对象,并显式地将其设置为指向该对象。这是arrow函数将看到的值,因为这是直接词汇上下文中的值

这很混乱,因为常规函数使用不同的规则来定义它。例如,这适用于普通对象:

const person={ 名称:“bbb”, //非箭头函数 getName{console.logthis.name} }
person.getName;如果我理解你@김종현, 那么是的,构造函数创建的对象只是一个简单的对象。由对象文字创建的箭头函数是一个函数。
const test = new Person();