JavaScript中的getter和setter

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)

未完待续

你可能感兴趣的:(JavaScript中的getter和setter)