Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript: best way to instantiate an array of objects

What is the easiest was to populate an array with a large number of objects created with a constructor?

I have a constructor function than makes TV and movie objects:

function Media(name, boxCover) {
    this.name = name;
    this.boxCover = boxCover;
};

I am making many objects that I want to put into an array. This does not work:

var table = [
var avengers = new Media("avengers",'../assets/boxcovers/avengers.jpg');
var blade_runner = new Media("blade_runner",'../assets/boxcovers/blade_runner.jpg');
var brave = new Media("brave",'../assets/boxcovers/brave.jpg');
var catching_fire = new Media("catching_fire",'../assets/boxcovers/catching_fire.jpg');
var django = new Media("django",'../assets/boxcovers/django.jpg');
var finding_nemo = new Media("finding_nemo",'../assets/boxcovers/finding_nemo.jpg');
];

I also tried putting table.push( at the beginning of each line. Do I really need to list each object again in the array like this or I can save the duplicate effort:

table = [avengers, blade_runner, etc.
like image 964
CJ Johnson Avatar asked Jul 05 '15 23:07

CJ Johnson


1 Answers

The syntax for this would be

var table = {
    mykey: myproperty,
    mykey2: myproperty2
};

If you want your variable to be an object, that is you can access properties by calling f.e table.avengers, your declaration should look like:

var table = {
    avengers: new Media("avengers",'../assets/boxcovers/avengers.jpg'),
    blade_runner: new Media("blade_runner",'../assets/boxcovers/blade_runner.jpg'),
    brave: new Media("brave",'../assets/boxcovers/brave.jpg')
    //... and so on and so forth
};

If you only want to be able to loop through them, you can create it as an array:

var table = [
    new Media("avengers",'../assets/boxcovers/avengers.jpg'),
    new Media("blade_runner",'../assets/boxcovers/blade_runner.jpg'),
    new Media("brave",'../assets/boxcovers/brave.jpg')
    //... and so on and so forth
];
like image 135
Jan Avatar answered Oct 11 '22 02:10

Jan