1.什么是get和set方法。

  • get是获得属性的一种方法。
  • set是设置属性的一种方法。
  • get负责查询,不带任何参数。
  • set负责设置,是通过参数的形式传递。

2.get和set的使用方法。

  • get和set是方法,所以可以进行判断。
  • get一般是得到,需要返回。
  • set是创建,不需要返回。
  • 每一个对象都有一个get和set方法。
  • 如果调用的是对象内部的属性,命名格式是变量名前面添加。

3.get和set的定义。

  • 在对象初始化时定义。
  • 在对象定义后定义。
//在对象初始化时定义。
var obj={  
  a: 1,   
  b: 2,   
 set c(x){
 console.log('c被赋值',x);
 c=x;
 }, 
 get c(){
 console.log('c被取出',c);
 return c
 }  
 }; 
 obj.c=7  //c被赋值 7
 obj.c  //c被取出 7
 //对象初始化之后可以这样添加属性  
 var obj={  
   a: 1,   
   b: 2  
     }; 
  obj.__defineGetter__('c', function(){
  return c
  });
  obj.__defineSetter__('c', function(x){
  c = x
  }); 
  //或者使用  
  Object.defineProperty(obj, 'c', {
    set:function(x){ 
   console.log('c被赋值',x);   
   c=x 
    },  
  get:function(){ 
  console.log('c被取出',c)    
  return c  
  }}) 
  obj.c=3  //c被赋值 3
  obj.c  //c被取出 3

例子:

var person={
    _name:"lisi",
    _age:18,
    //_name的只读。
    get name(){

        return this._name;
    },
//_age的读写。

    set age(Age){
        this._age=Age;
    },
    get age(){
        return this._age ;
    }
};

console.log(person._name+" "+person._age);//lisi 18
person.name='lily';
person.age=21;
console.log(person.name+" "+person.age);//lisi 21
console.log(person._name+" "+person._age);//lisi 21
//因为_name只读不写,所以name不会发生改变。
      
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐