JavaScript的setter与getter方法

作者:http://hawkzz.com

原先在写项目进度一向都并未运用过Javascript的setter与getter方法,所以对其是一种要懂不懂的概念;今日看书来看那个知识点,依然模模糊糊的,于是就打算探究探讨;

Javascript对象的习性是由名字,值和一组性子构成的。那么首先,来打听一下目的的三种属性:

  • 数据属性,大家平常使用,应该很精通
  • 做客器属性,也称存取器属性

何为存取器属性?就是一组获得和设置值的函数。在ECMAScript5中,属性值可以用一个或多个章程设置,那八个措施就是getter和setter;由此getter和setter定义的性质被誉为存取器属性。

var o = {
    get val(){
        /*函数体*/
        return ;
    },
    set val(n){
        /*函数体*/
    }
}

上边的就是一个存取器属性定义的最简便的法子,可以看到getter和setter方法其实就是取代function的一个函数。

var o = {
    a:3,
    get val(){
        return Math.pow(this.a,2);
    }
}

console.log(o.val);//9
o.val = 100;
console.log(o.val);//9

getter方法是无参数,并且有重回值的;当单独设置getter方法时,只可以获取属性值,不可以更改其定义的属性值的,有限支撑了数码的安全性;

var o = {
    a:3,
    set val(n){
        this.a = n;
    }
}

console.log(o.val);//undefined

setter方法是有参数,没有重回值的;当单独设置setter方式时,是不能读取属性值的;

var  o ={
    a:3,
    get val(){
        return Math.pow(this.a,n);
    },
    set val(n){
        this.a = Math.max(this.a,n);
    }
}

console.log(o.a);//3
console.log(o.val);//9
o.val = 10;
console.log(o.a);//10
console.log(o.val);//100

因而地方的代码可以看到,其中this是指其目标(即代码中的“o”);

var o ={
     a:3,
    get val(){
        return Math.pow(this.a,n);
    },
    set val(n){
        this.a = Math.max(this.a,n);
    }
}

o.val = 10;
var foo = Object.create(o);
console.log(foo.val);//10
foo.val = 9;
console.log(foo.val);//10

除此以外,存取器属性也是足以被持续的;