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. POJ 1845 (约数和+二分等比数列求和)

    题目链接: http://poj.org/problem?id=1845 题目大意:A^B的所有约数和,mod 9901. 解题思路: ①整数唯一分解定理: 一个整数A一定能被分成:A=(P1^K1) ...

  2. Nginx 利用 X-Accel-Redirect response.setHeader 控制文件下载

    nginx.conf location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP ...

  3. Invalid escape sequence(valid ones are \b \t \n \f \r \" \' \\)

    Invalid escape sequence(valid ones are \b \t \n \f \r \" \' \\) 在运行eclipse的相关程序代码时遇到了报错信息,查看控制台 ...

  4. ios面试(2015.10.30)

    今天去深圳市丰泰瑞达实业有限公司面试,面试分为笔试和面试两部分,结果非常不理想,不过学到很多.面试题记录如下: 1.tableview的三个常用方法的实现 - (NSInteger)numberOfS ...

  5. (转载)String.IsNullorEmpty()方法的使用

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...

  6. nodejs高大上的部署方式-PM2

    1.最常用的属nohup了,其实就是在后台执行进程,末尾加个&   [zhoujie@ops-dev ~]$ nohup node /home/zhoujie/ops/app.js & ...

  7. OpenStack 二次开发环境和开发工具的选择

    OpenStack网上安装教程很多,就不介绍安装了,OpenStack所有组件都安装完后,dashboard web里面进行一些操作,没有报错或提示权限问题,就可以直接下载pycharm或者eclip ...

  8. onselectstart

    以前在做图片滚动时,在双击左右箭头,快速切换图片滚动时,会选择附近区域的文字,感觉不是很好,今天在同事在分享时,讲到了这个问题, 试了一下,不错,解决了问题IE及Chrome下的方法一样,对相应的元素 ...

  9. iOS开发-定制多样式二维码

    iOS开发-定制多样式二维码   二维码/条形码是按照某种特定的几何图形按一定规律在平台(一维/二维方向上)分布的黑白相间的图形纪录符号信息.使用若干个与二进制对应的几何形体来表示文字数值信息. 最常 ...

  10. MyBatis增删改查

    MyBatis的简介: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...