账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何给js内建对象构造器添加getter和setter
    30
    0

    gettersetter的调用方式很酷
    不用写()执行括弧,就能实现调用函数

    当我们给创建一个对象构造器Person的时候:

    function Person(value) {
        this.counter = value;
    }

    我们可以给对象构造器Person添加一个getter或者setter方法:

    Person.prototype = {
        get increment () {
            this.counter++;
        }
    }

    这样当我们new Person的时候就可以不带执行括弧()的方式调用increment

    var person = new Person(3)
    person.increment
    console.log(person.counter) // 4

    问题:

    同理,当我们new一个数组的之前,我们用同样的方式也给数组添加一个getter

    Array.prototype = {
        get increment() {
            this[0]++;
        }
    }
    
    var arr = new Array(1,3);
    arr.increment
    console.log(arr)  // Array(2)[ 1,3 ]

    语法没有报错,但事情却毫无疗效。
    我想知道这是为什么?

    但是当你给将其写成一个方法的时候,它实际上是有疗效的

    Array.prototype.increment = function() {
            this[1]++;
        }
    
    
    var arr = new Array(1,3);
    arr.increment()
    console.log(arr)  // Array(2)[ 1,4 ]
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版

    回答动态

    师傅被妖怪抓走了:发布了悬赏问题火爆全网的“元宇宙”到底是什么?预计能赚取 1积分收益
    酒后略带风情:发布了悬赏问题Android内存中Graphics与Code占用过高预计能赚取 10积分收益
    扛起拖把扫天下:发布了悬赏问题typescript如何导出接口配置?求解,谢谢!预计能赚取 10积分收益
    发布了悬赏问题Vue 如何改变返回页面的路径?如让B页面只能返回到A页面.预计能赚取 11积分收益
    发布了悬赏问题vue H5移动端;底部bottom固定定位,安卓弹起键盘导致页面变形如何解决?预计能赚取 10积分收益
    发布了悬赏问题请问为什么tomcat8.5 GET请求中文正常,POST请求还需要设置UTF-8.预计能赚取 10积分收益
    发布了悬赏问题vue2.5+ts创建以及引入jq的方法预计能赚取 11积分收益
    情场浪女:发布了悬赏问题import ggplot时报错module 'pandas' has no attribute 'tslib'预计能赚取 10积分收益
    见心书画许老师18753375161:发布了悬赏问题echarts3 legend禁止点击事件,允许悬浮事件预计能赚取 11积分收益
    aa_92cb0bd09f:发布了悬赏问题codewar上的一个问题预计能赚取 11积分收益