我的代码看起来与此类似:
我创建变量:
var person1;
然后我将其添加到数组中:
var people = [];
people.push(person1);
最后我定义“person1”是什么:
person1 = new Person("Mike", 25, "London");
问题是,插入数组后定义的人是未定义的。由于某些原因,我无法在放入数组之前定义所有人。如我所见,“people.push(person1);”实际上将此变量的副本放入数组。我可以只将变量的引用放到数组中吗?
最佳答案
您必须创建对象的实例并将对象指针压入数组。现在的问题是你正在推送 undefined
因为你没有首先实例化一个 Person
对象。
明确你的代码当前看起来像这样:
var person1 = undefined;
var people = [];
people.push(person1);//pushing undefined unto the array
person1 = new Person();//now you have a pointer to an object
你必须首先实例化一个Person
然后你的变量和数组条目将指向相同的东西
var person1 = new Person();
var people = [];
people.push(person1);//pushing a person reference onto the array
person1.someProperty = "lorem"
people[0].someProperty = "ipsum"
//both person1.someProperty and people[0].someProperty are "ipsum"
同样,您可以直接在数组中实例化person
,并创建一个引用数组中对象的变量。
var people = [new Person()]; //creates an array with a new person object.
people.push(new Person); //adds a new person to the array
var person1 = people[0];
var person2 = people[1];
person1.greet(person2);
关于javascript - 如何推送到数组仅引用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21685941/