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