Javascript 在控制台上打印对象时出现问题
我尝试用给定的值创建一个car对象。当函数运行时,我在控制台上打印它们,一切看起来都正常,但是,当查看car2的属性时,没有值分配它Javascript 在控制台上打印对象时出现问题,javascript,prototype,javascript-objects,Javascript,Prototype,Javascript Objects,我尝试用给定的值创建一个car对象。当函数运行时,我在控制台上打印它们,一切看起来都正常,但是,当查看car2的属性时,没有值分配它 function Car() { this.brand = ""; this.wheel = 0; this.crash = false; } Car.prototype.createNewCar2 = function(array
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);
实际上,您没有使用
this
将值指定给对象的属性。您只需覆盖对象的键
。您需要使用此
指定对象的值:
var keys = Object.keys(this);
this[keys[i]] = array[i];
功能车(){
该品牌=”;
这个轮子=0;
this.crash=false;
}
Car.prototype.createNewCar2=函数(数组){
var-keys=Object.keys(这个);
对于(var i=0;i 控制台日志(car2)代码>这是怎么做的:Object.keys(this)[i]=array[i]
?您必须执行此[propertyName]=value
获取汽车对象的属性,并在array@SüleymanAcar不这样做,Object.keys
不能保证属性顺序。而是显式写出[this.brand,this.wheel,this.crash]=数组代码>。或者更好,不要将数组作为参数,而是使用多个参数?你是对的,但我只是尝试使用新方法来实现这一点,但感谢重新编译@白藜芦醇,先生。谢谢你的解释@安吉特Agarwal@SüleymanAcar虽然这是一种方法,但理想情况下,它应该在constructor@Rajesh我同意你的看法。答案是根据代码上下文给出的OP@AnkitAgarwal是的。我明白这一点。因此添加了一条评论作为警告。虽然这是可以改进的,但据我所知,这个问题属于印刷领域,所以并没有回答。
var keys = Object.keys(this);
this[keys[i]] = array[i];