zoukankan      html  css  js  c++  java
  • js对象,set和get方法 的三种实现形式

    var obj1 = {
        name: 'shaanxi',
        get nameGet() {
            return this.name + 'a';
        },
        set nameSet(name) {
            this.name = name;
        }
    };
    
    console.info(obj1.nameGet); //shaanxia
    obj1.nameSet = 'set by set keywords';
    console.info(obj1.nameGet); //set by set keywordsa
    

    第一种方式, 直接在对象内设置。 如代码所示。

    var obj2 = {
        name: 'shaanxi'
    };
    
    obj2.__defineGetter__('nameGet', function() {
        return this.name;
    });
    obj2.__defineSetter__('nameSet', function(
        name) {
        this.name = name;
    });
    var ref1 = obj2.__lookupGetter__('nameGet');
    var ref2 = obj2.__lookupSetter__('nameSet');
    console.info(obj2.nameGet); //shaanxi
    obj2.nameSet = 'set by __defineSetter__';
    console.info(obj2.nameGet); //set by __defineSetter__
    

    第二种方式: 使用原型方法进行设置

    var obj3 = {
        name: "shaanxi"
    };
    Object.defineProperties(obj3, {
        nameGet: {
            value: function() {
                return this.name;
            }
        },
        nameSet: {
            value: function(name) {
                this.name = name;
            }
        }
    });
    
    console.info(obj3.nameGet()); //shaanxi
    obj3.nameSet('set by Object.defineProperty');
    console.info(obj3.nameGet()); //set by Object.defineProperty
    

    第三种方式: 使用Object.defineProperty() 和Object.defineProperties() 进行设置

  • 相关阅读:
    广州公交百态之座位
    遍地大头者,岂尽聪明人
    小和尚
    c++中调用其他应用程序的方法(winexec shellexecute createprocess)
    MFC Is MVC
    Dialog Data Exchange
    MFC Extension dll VS Regular Dll
    Don't optimize prematurely
    Menu Basic
    Don't pessimize prematurely
  • 原文地址:https://www.cnblogs.com/ysk123/p/11676144.html
Copyright © 2011-2022 走看看