javascript getter和setter有什么用?

var o = {
        get a() {
            return this._a || 0
        },
        set a(v){
            this._a = v
        }
    }

    o.a = 100;
    alert(o.a)


    var o = {
        geta:function(){
            return this._a || 0;
        },
        seta:function(v){
            this._a =  v
        }
    }
    o.seta(100);
    alert(o.geta())

getter和setter没看出来有什么用呢 ?

阅读 3.5k
2 个回答

getter和setter可以在你对属性进行操作之前装上钩子函数,在取值和赋值之前执行。

如果是两个方法都有的话确实没什么用,还不如直接用.号访问,像OC还故意扩充了.号存取设置属性的语法。

但是,如果只开放get或者只开放set就有用了。

只有get方法可以模拟出只读属性。

而set方法则可以模拟出只写属性,记得浏览器里面跨域iframe就是可以更改location.href但是不可读的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题