如何使用函数实例化空对象中的值

时间:2018-04-27 23:03:04

标签: javascript arrays function object

我无法使用函数为空对象添加值:

我正在尝试使用此代码生成基于随机数的汽车对象,这些随机数从数组中提取值并将它们添加到空对象

var makes = ["BMW", "Audi", "Mercedez", "Range Rover", "Lexus"];
var models= ["M Series", "S Series", "AMG", "Explorer", "F Series"];
var years = [2003, 2017, 2018, 1993, 2006];
var colors = ["black", "red", "blue", "silver", "Red"];
var convertibles = [true, false];

var rand1 = Math.floor(Math.random() * makes.length);
var rand2 = Math.floor(Math.random() * models.length);
var rand3 = Math.floor(Math.random() * years.length);
var rand4 = Math.floor(Math.random() * colors.length);
var rand5 = Math.floor(Math.random() * 5) + 1; //using this one to determine passenger
var rand6 = Math.floor(Math.random() * 2); //using this one to determine whether it's a convertible or not

function makeCar(newCar){
    newCar = {
        make: makes[rand1],
        model: models[rand2],
        year: years[rand3],
        color: colors[rand4],
        passengers: rand5,
        convertible: convertibles[rand6],
        mileage: 0
    };

    return newCar;


}

var Beamer = {};

makeCar(Beamer);

console.log(Beamer);

然而,每当我在firefox的web控制台中运行它时,我得到:

{}
​
__proto__: {…}

我正在使用教科书Headstart:javascript,我看到你可以像这样创建一个空对象:

var lookMaNoProps = { };

然后您可以像这样动态添加到所述空对象:

var lookMaNoProps = { }; lookMaNoProps.age = 10;
if (lookMaNoProps.age > 5) {
lookMaNoProps.school = "Elementary";}

只是在尝试理解为什么我没有经历或者我的语法错误时遇到了一些麻烦。

由于

2 个答案:

答案 0 :(得分:1)

你正在传递一个对象或你的函数,但是你要重新分配一个你返回的新对象,然后再也不用了。 你应该这样做:

function makeCar(){
    var newCar = {
        make: makes[rand1],
        model: models[rand2],
        year: years[rand3],
        color: colors[rand4],
        passengers: rand5,
        convertible: convertibles[rand6],
        mileage: 0
    };

    return newCar;


}

var Beamer = makeCar();

或者如果你想改变传递的对象:

function makeCar(newCar){
    Object.assign(newCar, {
        make: makes[rand1],
        model: models[rand2],
        year: years[rand3],
        color: colors[rand4],
        passengers: rand5,
        convertible: convertibles[rand6],
        mileage: 0
    });
}

var Beamer = {};

makeCar(Beamer);

答案 1 :(得分:0)

函数makeCar(newCar)会返回newCar,但您不会将其保存到对象Beamer,因此它会保持为空。



var makes = ["BMW", "Audi", "Mercedez", "Range Rover", "Lexus"];
    var models= ["M Series", "S Series", "AMG", "Explorer", "F Series"];
    var years = [2003, 2017, 2018, 1993, 2006];
    var colors = ["black", "red", "blue", "silver", "Red"];
    var convertibles = [true, false];
    
    var rand1 = Math.floor(Math.random() * makes.length);
    var rand2 = Math.floor(Math.random() * models.length);
    var rand3 = Math.floor(Math.random() * years.length);
    var rand4 = Math.floor(Math.random() * colors.length);
    var rand5 = Math.floor(Math.random() * 5) + 1; //using this one to determine passenger
    var rand6 = Math.floor(Math.random() * 2); //using this one to determine whether it's a convertible or not
    
    function makeCar(){
        var newCar = {
            make: makes[rand1],
            model: models[rand2],
            year: years[rand3],
            color: colors[rand4],
            passengers: rand5,
            convertible: convertibles[rand6],
            mileage: 0
        };
    
        return newCar;
    
    
    }
    
    var Beamer = {};
    
    Beamer = makeCar();
    
    console.log(Beamer);