Object.defineProperty的setter为啥不起作用?

close = {}
Object.defineProperty(close, 'name', {
        set: function (newValue) {
            console.log(this)
            // callback(this.name);
        }
    })
close.name = 111;
console.log(close)

为什么我赋值了name以后 打印出来的close还是旧的?

PS:我就想让set还是原来的功能 就在加一个函数运行一下。

阅读 2.2k
2 个回答

要加个属性过滤器的话直接写成这样就行

const close = {
  _name: "",
  get name() {
    return this._name;
  },
  set name(value) {
    console.log("newValue", value);
    this._name = value;
  }
};

close.name = 3;

console.log(close);
    var close = {}
    var name="";
    Object.defineProperty(close, 'name', {
            set: function (newValue) {
                name=newValue;
                console.log(this)
                // callback(this.name);
            },
            get:function(){
                return name
            }
        })

    close.name = 111;
    console.log(close)
    console.log(close.name)

这样写好一点 没有get 他会是undefined 而且你set里面没有赋值

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