Javascript 在控制台上打印对象时出现问题

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

我尝试用给定的值创建一个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);

实际上,您没有使用
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];