JavaScript中的getter和setter
在JavaScript中,可以使用getter属性和setter属性给对象的属性复制,在MDN的文档中,setter和getter连用,给对象创建一个伪属性。这种创建的属性MDN文档中称为伪属性。并且不能在具有真实值的属性上同时有一个setter。
Setter
语法
{set prop(val) {...}}
{set [expression](val){...}}
参数
- props 要绑定到给定函数的属性名
- val 用户保存尝试分配给props的值的变量的别名
- expression 从ES2015开始,可以使用表达式绑定到给定的函数
注意:
- setter的标识符可以是一个数字或者字符串
- 必须有一个明确参数
- 同一个对象中,不能为一个已有真实值的变量使用set,也不能为同一属性设置多个set。
- (
{ set x(v) { }, set x(v) { } }
和{ x: ..., set x(v) { } }
是不允许的 )
- (
setter定义的属性可以用delete操作移除
示例
对象初始化时定义setter
定义一个属性age,
//构造函数 Person function Person(num){ this.num = num; this._age = 18 } Person.prototype = { constructor:Person, set age (value){ if(!(value>100 || value< 0)) { this._age = this._age; } else { this._age = value } }, get age() { return this._age } } //实例 var person = new Person(18) console.log(person.age) person.age = "40" console.log(person.age)