Javascript 如何推送到仅对变量的数组引用?

Javascript 如何推送到仅对变量的数组引用?,javascript,Javascript,我的代码与此类似: 我创建变量: var person1; 然后我将其添加到数组中: var people = []; people.push(person1); 最后我定义了什么是“person1”: 问题是,推送到数组后定义的人是未定义的。由于某些原因,我无法在放入数组之前定义所有人。如我所见,“people.push(person1);”实际上将这个变量的副本放入数组中。可以这样做,我只将变量的引用放在数组中?首先,您需要将人员定义为数组var people=[] 然后按数组排列一个默

我的代码与此类似:

我创建变量:

var person1;
然后我将其添加到数组中:

var people = [];
people.push(person1);
最后我定义了什么是“person1”:


问题是,推送到数组后定义的人是未定义的。由于某些原因,我无法在放入数组之前定义所有人。如我所见,“people.push(person1);”实际上将这个变量的副本放入数组中。可以这样做,我只将变量的引用放在数组中?

首先,您需要将
人员
定义为数组
var people=[]


然后按数组排列一个默认的person
newperson()
,然后按索引引用person
people[1]
(例如),然后更改该值。。。要想得到你想要的

你唯一能做的就是:

var person1 = new Person();
var people  = [];
people.push(person1);


people[0].name = "Mike";
people[0].age  = 25;
people[0].city = "London";

您必须创建对象的实例,并将对象指针推送到数组上。现在的问题是,由于您没有首先实例化
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
您必须首先实例化一个
,然后您的变量和数组条目都将指向同一个对象

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中没有指针
person1
不是指针

此变量将引用一个值。使用变量时,引用当前值。因此,在使用时:

var person1;
people = [];
people.push(person1);
undefined
显示,因为这是
person1
的当前值。将来对
person1
的任何更改都将更改
person1
的值,但不会影响
person
数组中的任何值

在这里,更合适的做法是采用一种更简单的方法,只传递您创建的新价值

people = [];
people.push(new Person("Mike",25,"London"));

由于js是对象/数组的按引用传递,因此您只需首先将person1创建为对象,然后编辑其属性,就无法在JavaScript中创建对变量的引用。
var people={};人。推(人1)不起作用,它不是数组(
[]
)。
people = [];
people.push(new Person("Mike",25,"London"));