https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/get
get 语法将对象属性绑定到查询该属性时将被调用的函数。
使用场景:有时需要允许访问返回动态计算值的属性,或者你可能需要反映内部变量的状态,而不需要使用显式方法调用。
语法形式:
{get prop() { ... } }
其中prop表示要绑定到给定函数的属性名。
使用get语法时应注意以下问题:
- 可以使用数值或字符串作为标识;
- 必须不带参数
示例:
const obj = {
numbers: [1, 2, 3],
get latestNumber() {
if (this.numbers.length === 0) {
return undefined
}
return this.numbers[this.numbers.length - 1]
}
}
// 将latestNumber作为obj对象的属性访问
console.log(obj.latestNumber)
输出:
示例:getter作为函数访问会出错
const obj = {
numbers: [1, 2, 3],
get latestNumber() {
if (this.numbers.length === 0) {
return undefined
}
return this.numbers[this.numbers.length - 1]
}
}
// 将latestNumber函数访问出错
console.log(obj.latestNumber())
运行出错:
示例:不能给getter赋值
const obj = {
numbers: [1, 2, 3],
get latestNumber() {
if (this.numbers.length === 0) {
return undefined
}
return this.numbers[this.numbers.length - 1]
}
}
// 不能给latestNumber赋值
obj.latestNumber = 10
运行出错:
示例:用delete删除getter
const obj = {
numbers: [1, 2, 3],
get latestNumber() {
if (this.numbers.length === 0) {
return undefined
}
return this.numbers[this.numbers.length - 1]
}
}
console.log(obj.latestNumber)
console.log('----------------')
// 用delete删除getter
delete obj.latestNumber
// 删除getter以后,值是undefined
console.log(obj.latestNumber)
运行输出: