节点.js如何使一个变量更改也适用于另一个变量更改

node.js how to make one variable change apply to another one aswell?

本文关键字:变量 适用于 另一个 js 节点 何使一      更新时间:2023-09-26

有没有某种方法可以拥有某种"共享"变量?我想做的是:

var id = 5;
var player = new Player(id);
var array1[0] = player;
var array2[0] = player;
array1[0].id = 8
console.log(array1[0]); //8
console.log(array2[0]); //8

在 JavaScript 中,您不会将对象直接存储在变量中,而是存储对该对象的引用。

这意味着,您可以有两个指向同一对象的变量 - 您只需复制引用:

var a = {test: "test"};
var b = a;
console.log(a === b) // true

在这种情况下,如果您通过a改变对象,然后通过b读取它,您将看到更改。

通过正确实施Player,您可以使其为您工作:

var Player = function(id) {
  this.id = id;
}
Player.prototype.setId = function(id) {
  this.id = id;
}
Player.prototype.getId = function() {
  return this.id;
}
var player = new Player(5);
console.log(player.getId()); // 5
var arrA = [];
var arrB = [];
arrA.push(player);
arrB.push(player);
console.log(arrA[0].getId()); // 5
console.log(arrB[0].getId()); // 5
arrA[0].setId(10);
console.log(arrA[0].getId()); // 10
console.log(arrB[0].getId()); // 10

查看 MDN 以获取有关使用对象的更多信息。