Как настроить метод для обновления переданных свойств объекта JavaScript? - PullRequest
0 голосов
/ 12 ноября 2018

Я ищу способ создания объекта для обновления только переданных свойств.

например

function Car () {
  this.color = 'yellow'
  this.brand = 'bmw'
  this.key = 0

  this.update = function (o) {
    this.key++
    // maybe Object.assign(this, o) somehow ??
  }
}

Если я сделаю Car.update({color:'red'}), я хочу обновить объект, но не перезаписать марку. Я хочу использовать что-то вроде Object.assign(this, o), но не знаю, как его назначить. Нужно ли создавать прототип? Car.prototype.update = ?

Ответы [ 3 ]

0 голосов
/ 12 ноября 2018

Идея, которую вы предложили в своем ОП, работает отлично.

function Car () {
  this.color = 'yellow';
  this.brand = 'bmw';
  this.key = 0;

  this.update = function (o) {
	Object.assign(this, o);
  }
}

a = new Car();
a.update({color: "red"});
console.log(a.color + " - " + a.brand + " - " + a.key);
// returns "red - bmw - 0"
0 голосов
/ 12 ноября 2018

Object.assign изменяет первый аргумент, поэтому нет необходимости присваивать результат Object.assign() чему-либо.

Object.assign(this, o);

... будет работать нормально.

function Car () {
  this.color = 'yellow'
  this.brand = 'bmw'
  this.key = 0

  this.update = function (o) {
    this.key++
    Object.assign(this, o);
  }
}

var car = new Car();
car.update({color: 'red'});
console.log(car);
0 голосов
/ 12 ноября 2018
const object1 = {
color : 'red'
};

const obj2 = Object.assign({color: 'blue', d: 5}, object1);
console.log(obj2.color); // red

Метод Object.assign () -> копирует значения всех перечисляемых собственных свойств. Наконец, он вернет целевой объект

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...