下面这个例子中 person只有_name
这个属性吧 没有name
这个属性吧 为什么结果是2
而不是undefined
var person = {
_name: 2,
get name() { return this._name },
set name(n) { this._name = n }
}
console.log(person.name)
下面这个例子中 person只有_name
这个属性吧 没有name
这个属性吧 为什么结果是2
而不是undefined
var person = {
_name: 2,
get name() { return this._name },
set name(n) { this._name = n }
}
console.log(person.name)
欢迎查阅MDN官方文档对get和set的说明:
The get syntax binds an object property to a function that will be called when that property is looked up.
https://developer.mozilla.org...
The set syntax binds an object property to a function to be called when there is an attempt to set that property.
var person = {
_name: 2,
get name() { return this._name },
set name(n) { this._name = n }
}
你已经设置了name
属性了,get name、set name。就相当于name
var person = {
_name: 2,
name: 2
}
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
get和set是对象定义中一种属性的绑定机制,它们以属性方法的形式定义了属性,这比直接定义对象属性有一些特殊的优势。
比如get可以定义通过多步计算出来的隐含属性,而set可以通过计算赋值另外的属性,比如:
虽然get和set定义是按对象方法来定义的,但使用时又按对象属性来使用(取值或赋值),而且在一个对象定义中,时不可能存在既有普通的对象属性,又有同名get或(和)set对象属性方法的。