Возникла проблема с выводом объекта на консоль - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь создать объект автомобиля с заданными значениями. Пока функция работает, я печатаю их на консоли, и все кажется нормальным, однако, когда я смотрю на свойства car2, никакие значения не присваиваются. Мой код следующий.

            function Car()
        {
            this.brand = "";
            this.wheel = 0;
            this.crash = false;
        }

  Car.prototype.createNewCar2 = function(array)
        {
            for(var i=0; i < array.length; i++)
                {
                    Object.keys(this)[i] = array[i];  
                    console.log(Object.keys(this)[i]);
                    console.log(array[i]);
                }
        }

        var car2 = new Car();
        car2.createNewCar2(["bmw",12,true]);
        console.log(car2);

Когда я создаю newcar, я присваиваю значения правильному индексу. Я вижу это, когда я утешаю их. Однако после создания, никакие значения не присваиваются объекту автомобиля. Я не мог понять, в чем проблема. заранее спасибо. Мой вывод следующий

brand
bmw
wheel
12
crash
true
Car {brand: "", wheel: 0, crash: false}

1 Ответ

0 голосов
/ 06 сентября 2018

Вы фактически не присваиваете значение свойству объекта, используя this. Вы просто перезаписываете key объекта. Вам необходимо присвоить значение объекта, используя this:

var keys = Object.keys(this);
this[keys[i]] = array[i];

function Car() {
  this.brand = "";
  this.wheel = 0;
  this.crash = false;
}

Car.prototype.createNewCar2 = function(array) {
  var keys = Object.keys(this);
  for (var i = 0; i < array.length; i++) {
    this[keys[i]] = array[i];
    console.log(Object.keys(this)[i]);
    console.log(array[i]);
  }
}

var car2 = new Car();
car2.createNewCar2(["bmw", 12, true]);
console.log(car2);
...