JS中ES5和ES6中set和get方法

描述:

JS中ES5和ES6中set和get方法

 

  • ES5

情况一:对象已经创建,需要给上面添加setget方法


        /*
        *  如果使用defineProperty定义setget,默认configurable: false,enumerable: false
        * 
        *
        * */
        var obj={_a:0};
        Object.defineProperty(obj,"a",{
            configurable:false,
            enumerable:false,
            set:function (value) {
                this._a=value;
            },
            get:function () {
                return this._a;
            }
        });

情况二:当创建对象时,使用这种写法


        /*
        *  当使用对象设置setget时,configurable: true,enumerable: true
        *  
        *
        * */
        var obj1={
            _a:0,
            set a(value){
                this._a=value;
            },
            get a(){
                return this._a;
            }
        };
        console.log(Object.getOwnPropertyDescriptor(obj1,"a"));
  • ES6
       class Box{
            constructor(){
                this._data=null;
            }
            set data(value){
                this._data=value;
            }
            get data(){
                return this._data;
            }
        }

getset方法的使用:

get、set方法的使用在JavaScript中并不是像java、C、C++中的XXX.get(),XXX.set(),一样使用,而是通过以下:

         /*
        *  这就相当于执行了set a(value)这个访问器
        *  等号后面值就是访问器中参数value
        *
        *
        * */
       obj1.a=4;


        /*
        *  获取obj1.a的值,执行get a()这个访问器
        *  如果在等号右边,或者打印的函数中等。
        *  因为get a()访问器里有return,就会返回一个值
        *
        * */
       var sum=obj1.a+5;
       console.log(obj1.a);

 

你可能感兴趣的:(Js,H5,学习-总结-转载)