ECMAScriptJavaScript的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

另外,存取器属性也是可吃接续的;