例如,这是一段代码
let myQuestion = {
_greeting: 'Hello',
sayHello() {
console.log(this._greeting);
},
get sayHelloWithGet() {
console.log(this._greeting);
}
};
myQuestion.sayHello();
myQuestion.sayHelloWithGet;
他们两个都做了同样的事情,他们都被称为方法,但为什么不同的用法?
答案 0 :(得分:2)
......他们俩都被称为方法......
通常不会。通常,getter和setter被称为getter和setter,或统称为“accessors”(但是,有时候是“accessor方法”)。
...但为什么不同用法?
因为这就是重点:有时你在使用点需要那些不同的语义,即使它在封面下运行一个函数,它看起来像一个简单的属性访问。方法是动词,非方法属性是名词。
(当然,当将函数调用伪装成属性访问时,程序员有责任确保读取属性的成本很低。)
模糊相关:具有访问器的属性也包含在各种序列化中,而引用函数的属性通常不包括在内。例如:
var o = {
get foo() {
return 42;
},
bar() {
return 67;
}
};
console.log(JSON.stringify(o));