如何只删除二传手JS?

时间:2019-02-11 18:46:55

标签: javascript getter-setter delete-operator

我刚刚了解了JavaScript中的getter / setter方法。

documentation on MDN写道:

  

如果要删除设置器,只需delete即可:
  delete o.current;

此代码删除了二传手...

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中是否有一种方法可以删除设置器,但要保留设置器?

谢谢!

2 个答案:

答案 0 :(得分: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";

现在更好。不?

答案 1 :(得分:0)

为此目的使用Object.defineProperty

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

这将仅删除二传手。

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"