Как убрать только сеттер JS? - PullRequest
       6

Как убрать только сеттер JS?

0 голосов
/ 11 февраля 2019

Я только что прочитал о методах получения / установки в JavaScript.

В документации по 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 голосов
/ 12 февраля 2019

Используйте 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"
0 голосов
/ 11 февраля 2019

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

Вы должны изменить имя установщика и получателя.

object.y += "1"

Это не имеет смысла, потому что вы вызываете ту же функцию и еестанет:

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

Это неправильно.

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

Лучше сейчас.Нет

...