1.在对象中定义get,set访问器属性

<script>
        var test = {
            _name:"pmx",
            _age:18,
            _born:1990,
            get name(){
                return "name is "+this._name;
            },
            set name(value){
                this._name = value;
            },
            get born(){
                return this._born;
            },
            set born(value){
                this._born = value;
            },
            get age(){
                if(this._age > 100){
                    return new Date().getFullYear() - this.born;
                }else{
                    return this._age;
                }
            },
            set age(value){
                this._age = value;
            }
        }
        console.log(test.age);
        test.age = 2016;
        console.log(test.age);
</script>

2.使用defineProperty给对象添加访问器

<script>
        var test = {
            _name:"pmx",
            _age:18,
            _born:1990

        }
        Object.defineProperty(test,"name",{
            get:function(){
                return "name is "+this._name;
            },
            set:function(value){
                this._name = value;
            }
        });
        Object.defineProperties(test,{
            age:{
                get:function(){
                    if(this._age > 100){
                            return new Date().getFullYear() - this.born;
                        }else{
                        return this._age;
                    }
                },
                set:function(value){
                    this._age = value;
                }
            },
            born:{
                get:function(){
                    return this._born;
                },
                set:function(value){
                    this._born = value;
                }
            }
        });
         console.log(test.age); //18
         test.age = 2016;
        console.log(test.age); //26
</script>

3.在类中添加访问器

<script>
        function test(name,age){
            this._name = name;
            this._age = age;

            Object.defineProperty(this,"name",{
                get:function(){
                    return "name is "+this._name;
                }
            });
        }
        var tt = new test('pmx',26);
        console.log(tt.name);
</script>

JS之访问器的更多相关文章

  1. Js中的数据属性和访问器属性

    Js中的数据属性和访问器属性 在javaScript中,对象的属性分为两种类型:数据属性和访问器属性. 一.数据属性 1.数据属性:它包含的是一个数据值的位置,在这可以对数据值进行读写. 2.数据属性 ...

  2. js中的访问器属性中的getter和setter函数实现数据双向绑定

    嗯,之前在读js红宝书的时候,在对象那一章有介绍属性类型.第一种数据类型指的是数据属性,第二种是访问器属性.在初识vue的时候,其双向数据绑定也是基于访问器属性中的getter和setter函数原理来 ...

  3. js中属性类型:数据属性与访问器属性

    js中属性类型分为两种:数据属性和访问器属性 在js中,对象都是由名值对构成的,名:就是我们所说的属性名,值就是属性对应的值(基本值.对象.方法). ECMA-262第5版定义了只有内部才用的特性,描 ...

  4. js对象的数据属性和访问器属性

    js面向对象 ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262定义这些特性是为了实现javascript引擎用的,因此 ...

  5. js对象的属性:数据(data)属性和访问器(accessor)属性

    此文为转载,原文: 深入理解对象的数据属性与访问器属性 创建对象的方式有两种:第一种,通过new操作符后面跟Object构造函数,第二种,对象字面量方式.如下 var person = new Obj ...

  6. 《js高级程序设计》6.1.1-6.1.3——数据属性、访问器属性

    数据属性:该属性包含了一个数据值的位置,它包含了4个描述行为的特性:1. [[Configurable]]:表示是否能通过delete删除属性从而重新定义属性,能否修改属性的特性,能否把属性修改为访问 ...

  7. JS的数据属性和访问器属性

    ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262定义这些特性是为了实现javascript引擎用的,因此在javasc ...

  8. Node.js包管理器:

    Node.js包管理器: 当我们要把某个包作为工程运行的一部分时,通过本地模式获取,如果要在命令行下使用,则使用全局模式安装 使用全局模式安装的包并不能直接在JavaScript文件中用require ...

  9. node.js之调试器

    node.js之调试器 1.在命令行窗口中,可以使用"node debug" 命令来启用调试器,代码如下: node debug<需要被执行的脚本文件名> 接下来根据一 ...

随机推荐

  1. 【Oracle】ORA-00257:archiver error. Connect internal only, until freed 错误的处理方法

    archive log 日志已满ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法 1. 用sys用户登录  s ...

  2. URAL 1244. Gentlemen(DP)

    题目链接 这题不难啊...标记一下就行了.表示啥想法也没有. #include <cstring> #include <cstdio> #include <string& ...

  3. error===>ld: 2 duplicate symbols for architecture x86_64

    一,经历 1> 出现了以下错误,感觉像是GiftAnimationView文件的问题 /Users/liuzhu/Library/Developer/Xcode/DerivedData/test ...

  4. weblogic 11g 配置db2数据源

    配置db2数据源可以直接在包里面配置,不需要专门在服务器上配置数据源. 在11g版本前要配置db2数据源是需要增加包,后续的版本处理了这个问题. 1. 将C:\Program Files\SQLLIB ...

  5. 详解SpringMVC请求的时候是如何找到正确的Controller[附带源码分析]

    目录 前言 源码分析 重要接口介绍 SpringMVC初始化的时候做了什么 HandlerExecutionChain的获取 实例 资源文件映射 总结 参考资料 前言 SpringMVC是目前主流的W ...

  6. Centos rsync+inotify 实现数据同步备份

    最近公司做了一

  7. Red KV数据 庫设計模式

    转:http://blog.nosqlfan.com/html/3033.html NoSQL带给我们的东西很多,高性能,水平扩展性,还有不一样的思维方式.本文来自@hoterran的个人博客运维与开 ...

  8. OBject copy 和retain区别

    @interface Person : NSObject //retian : release 旧值,retain 新值 @property(nonatomic,retain) Book *book; ...

  9. 油田 Oil Deposits

    油田 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84562#problem/L 题意: 输入一个m行n列的字符矩形,统计字符 ...

  10. Hibernate的第一次测试解析

    解析:此题目考查的是对Hibernate中交叉连接的理解.HQL支持SQL风格的交叉连接查询,交叉连接适用于两个类之间没有定义任何关联时.在where字句中,通过属性作为筛选条件,如统计报表数据.使用 ...