如何删除只有setter JS?

问题描述 投票:0回答:2

我刚刚读过JavaScript中的getter / setter。

正如documentation on MDN写道:

如果你想删除setter,你可以只是delete它: delete o.current;

此代码删除了setter ...

var object = {
  something: "",
  get property() {
    return this.something
  },
  set property(value) {
    this.something = value
  }
}

object.property+="1"
object.property+="2"
object.property+="3"
object.property+="4"

console.log(object.property) //"1234"

delete object.property

console.log(object.property) //undefined

...但是吸气剂(同名)也是。

我需要使用相同的名称来使用+=运算符。

所以问题是:

JS中是否有一种删除setter的方法,但保留getter?

谢谢!

javascript getter-setter delete-operator
2个回答
0
投票

var object = {
  something: "",
  get x() {
    return this.something
  },
  set y(value) {
    console.log(value);
    this.something = value
  }
}
console.log(object.x)
object.y = object.x + "1"
delete object.y
object.y = object.x + "2"


console.log(object.x) //"1234"

delete object.x

console.log(object.x) //undefined

你必须改变setter和getter的名字。

object.y += "1"

它没有意义,因为你回忆起同样的功能,它将成为:

object.y = object.y + "1";

这是不对的。

object.y (set) = object.x (get) + "1";

现在好点了。没有?


0
投票

使用Object.defineProperty用于此目的:

Object.defineProperty(object,"property",{set:undefined})

这将仅删除setter。

var object = {
  something: "",
  get property() {
    return this.something
  },
  set property(value) {
    this.something = value
  }
}

object.property+="1"
object.property+="2"
object.property+="3"
object.property+="4"

console.log(object.property) //"1234"

Object.defineProperty(object,"property",{set:undefined})

console.log(object.property) //"1234"
© www.soinside.com 2019 - 2024. All rights reserved.