有关在控制台上打印对象的问题

问题描述 投票:1回答:1

我尝试用给定的值创建一个car对象。虽然功能正在运行,但我在控制台上打印它们,一切似乎都没问题,但是,当看到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时,我将值分配给正确的索引。我在控制台时看到它。记录它们。但是在创建之后,没有赋值给car对象。我无法弄清楚问题是什么。提前致谢。我的输出如下

brand
bmw
wheel
12
crash
true
Car {brand: "", wheel: 0, crash: false}
javascript prototype javascript-objects
1个回答
1
投票

实际上,您并未使用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);
© www.soinside.com 2019 - 2024. All rights reserved.