我很难理解为什么在 JavaScript 对象中有两种不同的方法来执行完全相同的操作。
这里我有一个对象,它的“log”属性中包含一个数组。 obj 的“最新”属性存储数组的最后一项,这是在函数的帮助下完成的。
const obj = {
log: ['a', 'b', 'c'],
latest: function () {
return this.log[this.log.length - 1];
},
};
console.log(obj.latest());
但是在教程的后面引入了关键字 Get,它的存在有点让我困惑,因为它在这里做了完全相同的事情:
const obj = {
log: ['a', 'b', 'c'],
get latest() {
return this.log[this.log.length - 1];
},
};
console.log(obj.latest);
他们解释说 get 关键字提供了更简单的语法,允许像常规属性 (obj.latest) 一样调用“最新”,而不是作为方法的 obj.latest()。
但是除了简化语法之外还有什么其他的吗? 谢谢
A
Function
就是你想要的任何东西,一些参数,一些代码,一些返回或没有这些。
但是
get
函数,严格要求无参数,有返回值。这是一个computed property
,更像是一个财产。
来自MDN解释:
使用get关键字和Object.defineProperty()有类似的地方 结果,两者在使用时存在细微差别 课程。
当使用 get 时,属性将被定义在实例的 原型,当使用 Object.defineProperty() 时,该属性将是 在其所应用的实例上定义。
Get关键字最好用在类中。