我尝试使用给定值创建汽车对象。当函数正常工作时,我在控制台上打印了它们,一切似乎都很好,但是,当我看一下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);
当我创建新车时,我将这些值分配给正确的索引。我在console.log他们时看到它。但是,创建后,未将值分配给汽车对象。我不知道是什么问题。提前致谢。我的输出如下
brand
bmw
wheel
12
crash
true
Car {brand: "", wheel: 0, crash: false}
答案 0 :(得分: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);