资讯专栏INFORMATION COLUMN

javascript对象定义set和get的方式解读!~

godlong_X / 619人阅读

摘要:方式使用原始的和标记设置方式使用原型方法进行设置使用和进行设置

/**

     * 方式1:使用原始的set 和 get标记设置
     * @type {Object}
     */
    var obj1 = {
        name: "shaanxi",
        get nameGet() {

            return this.name;
        },
        set nameSet(name) {
            this.name = name;
        }
    };

    console.info(obj1.nameGet);
    obj1.nameSet = "set by set keywords";
    console.info(obj1.nameGet);
    console.info("------------------------");
    /**
     * 方式2:使用原型方法进行设置
     * @type {Object}
     */
    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);
    obj2.nameSet = "set by __defineSetter__";
    console.info(obj2.nameGet);
    console.info("-----------------------------");
    /**
     * 使用Object.defineProperty()和Object.defineProperties()进行设置
     * @type {Object}
     */
    var obj3 = {
        name: "shaanxi"
    };

    /*Object.defineProperty(obj3, "nameGet", {
        value: function() {
            return this.name;
        }
    });

    Object.defineProperty(obj3, "nameSet", {
        value: function(name) {
            this.name = name;
        }
    });*/

    Object.defineProperties(obj3, {
        nameGet: {
            value: function() {
                return this.name;
            }
        },
        nameSet: {
            value: function(name) {
                this.name = name;
            }
        }
    });

    console.info(obj3.nameGet());
    obj3.nameSet("set by Object.defineProperty");
    console.info(obj3.nameGet());

    /**
     * end
     */

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82435.html

相关文章

  • 从koa-session源码解读session本质

    摘要:前言,又称为会话控制,存储特定用户会话所需的属性及配置信息。类先看构造函数居然啥屁事都没干。由此基本得出推断,并不是服务器原生支持,而是由服务程序自己创建管理。类老规矩,先看构造函数接收了实例传来和,其他没有做什么。 前言 Session,又称为会话控制,存储特定用户会话所需的属性及配置信息。存于服务器,在整个用户会话中一直存在。 然而: session 到底是什么? session...

    remcarpediem 评论0 收藏0
  • Yii源码解读-依赖注入(容器)

    摘要:在中使用解耦,有两种注入方式构造函数注入属性注入。对象的实例化解析依赖信息该方法实质上就是通过的反射机制,通过类的构造函数的参数分析他所依赖的单元。 有关概念 依赖倒置原则(Dependence Inversion Principle, DIP) 传统软件设计中,上层代码依赖于下层代码,当下层出现变动时,上层也要相应变化。 DIP的核心思想是:上层定义接口,下层实现这个接口,从而使的下...

    Prasanta 评论0 收藏0
  • 【Vue 2.0】核心源码解读 -- 不定期更新

    摘要:观察员由模板解析指令创建的观察员负责模板中的更新视图操作。观察员种类目前了解情况来看主要分三类视图指令的计算属性的用户自定义的 介绍 关于 Vue.js 的原理一直以来都是一个话题。经过几天的源码学习和资料介绍,我将一些个人理解的经验给写下来,希望能够与大家共勉。 附上GITHUB源码地址, 如果有任何不解 可以在 文章下面提出或者写下issue, 方便大家回答和学习, 有兴趣可以St...

    sunsmell 评论0 收藏0
  • 解读express 4.x源码(1)

    摘要:在后续的总结中,我会继续分析,并准备将一些值得分析的逐一解读,也会涉及一些。从一个官方示例开始这是官方给出的一个简单程序,运行后访问显示。第一行载入了框架,我们来看源代码中的。代码的开始定义了一个函数,函数有形参,,为回调函数。 这两天仔细看了看express的源码,对其的整个实现有了较清晰的认识,所以想总结一下写出来,如果有什么不对的地方,望指出。 这是第一篇,首先介绍一个最简单的...

    summerpxy 评论0 收藏0
  • Javascript面向对象程序设计_理解对象

    摘要:面向对象的程序设计理解对象前言最近在细读高级程序设计,对于我而言,中文版,书中很多地方翻译的差强人意,所以用自己所理解的,尝试解读下。总结如果英语水平足够好的话,建议看英文原版书籍或者国外大师的博客。 JS面向对象的程序设计_理解对象 前言:最近在细读Javascript高级程序设计,对于我而言,中文版,书中很多地方翻译的差强人意,所以用自己所理解的,尝试解读下。 如有纰漏或错误,会非...

    刘厚水 评论0 收藏0

发表评论

0条评论

godlong_X

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<