javascript - 如何推送到数组仅引用变量?

标签 javascript

我的代码看起来与此类似:

我创建变量:

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/

相关文章:

javascript - AngularJS 指令中的两种数据绑定(bind)方式

javascript - 使用绝对定位更改另一个 div 悬停时的 div 外观(不重复)

java - 使用 JavaScript 更改获取数据的 HTML 标签?

javascript - 如果元素有 className1 classFromArray 前置 classFromArray

javascript - 使用纯javascript获取 "position: fixed"元素的Y位置

javascript - 如何在 node.js 中创建一个 Get 请求以按日期(可以是月、日或年)对请求求和?

javascript - 计算 Javascript 中正则表达式的匹配次数

javascript - 如何为我的网站产品添加类似 Facebook 的按钮?

javascript - React FormIk 将值重置为空值 handleReset 函数

javascript - ui-select 输入未获得焦点单击 : conflict with angular-touch