• 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() 进行设置

  • 相关阅读:
    js获取盒子scrollTop
    获取浏览器宽度,自适应屏幕
    js切割字符串
    有向图的欧拉路径POJ2337
    欧拉回路和欧拉路径
    HDU 4462(暴力枚举)
    HDU 4455(dp)
    鸽巢原理入门
    HDU 4819 Mosaic(二维线段树)
    POJ 1330 Nearest Common Ancestors(LCA模板)
  • 原文地址:https://www.cnblogs.com/ysk123/p/11676144.html
Copyright © 2020-2023  润新知