在javascript中存储指针

在javascript中存储指针,javascript,Javascript,在javascript中不使用holder对象就可以保留对象引用吗? 当前,当一个对象被重写时,我有时会丢失对下面代码段中所示的“当前”对象状态的引用 是否有办法将“指针”放入数组中 编辑 对于所提出的问题: 我在对象中拥有的是对表单字段的引用。其中有些是文本字段,有些是文本区域,有些是复选框 我希望在它们是什么类型的直接引用旁边保留一张地图 基本上是这样的 obj { this.text1 = createTextField(); this.text1.datepicker();

在javascript中不使用holder对象就可以保留对象引用吗? 当前,当一个对象被重写时,我有时会丢失对下面代码段中所示的“当前”对象状态的引用

是否有办法将“指针”放入数组中

编辑 对于所提出的问题:

我在对象中拥有的是对表单字段的引用。其中有些是文本字段,有些是文本区域,有些是复选框

我希望在它们是什么类型的直接引用旁边保留一张地图

基本上是这样的

obj {
   this.text1 = createTextField();
   this.text1.datepicker();
   this.text2 = createTextField();
   this.area1 = createArea();
   this.check = createCheck();
   this.datefields = [this.text1];
   this.checkboxes = [this.check];
}
因此,我可以使用datefields/CheckBox数组作为检查点来验证字段的行为是/应该是哪种类型

目前我使用

function datefields() { return [this.text1]; };
但我想知道是否有比在需要检查时插入新数组更好的方法

我知道有一种方法可以让观察者模仿指针的行为,我已经尝试过这些方法,并取得了一些很好的效果,我只是好奇是否还有其他我不知道的方法

函数myObject(){
this.myvalue=null;
this.arr=[this.myvalue];
}
myObject.prototype.alter=函数(){
this.myvalue=“hello”;
}
var x=新的myObject();
var elem=document.getElementById('results');
功能日志(消息){
元素appendChild(document.createTextNode(message));
元素appendChild(document.createElement('br'));
}
日志(“x.myvalue=“+x.myvalue”);
日志(“x.arr[0]=”+x.arr[0]);
日志(“调用更改”);
x、 alter();
日志(“x.myvalue=“+x.myvalue”);
日志(“x.arr[0]=”+x.arr[0])

Javascript中没有指针,尽管您可以使用包装器对象进行一些欺骗。以下是此类对象的最小实现:

var Wrapper = function (value) {
    this.value = value;
};

Wrapper.prototype.valueOf = function () {
    return this.value;
};
然后您可以使用它来代替原始值:

function myObject() {
    this.myvalue = new Wrapper(null); // wrapper
    this.arr = [this.myvalue];
}

myObject.prototype.alter = function() {
    this.myvalue.value = "hello"; // notice the ".value"
}

代码的其余部分不需要调整。

简单回答:在JS中,只有对象(包括所有子类型)通过引用传递。将复制所有其他简单值

关于更多细节,我建议阅读第2章:

在JavaScript中,没有指针,引用的工作方式有点不同。不能从一个JS变量引用到另一个变量。那是不可能的

进一步引述:

简单值(也称为标量原语)总是通过值副本进行赋值/传递:
null
未定义
字符串
数字
布尔
和ES6的
符号

复合值——对象(包括数组和所有装箱对象包装器——参见第3章)和函数——总是在赋值或传递时创建引用的副本


这里有很多例子来说明这些观点。我强烈建议通读,以便更好地了解值/引用在JS中的工作方式。

每当根obj发生更改时,根和引用之间的引用链接将无效。请使用
console.log()
获取simplicity@NayukiMinase
console.log()
对于代码段,真的吗?这根本不可能,请阅读此内容(不要只阅读已接受的答案),以便您想将
myObject.arr[0]
指向
myObject.myvalue
,并在
.myvalue
更改时更新
.arr
?例如,您可以使用getter和setter来实现它:-不要将此作为答案发布,因为我不清楚它是否是您要寻找的。是的,但这正是我不想做的。见我问题的第一行;-)谢谢你的努力。@Michaeldibets真的!那么很抱歉:-D无论如何,您不能使用Javascript进行此操作:-/我确切地知道引用是如何工作的以及如何使用它。我只是好奇是否有带观察者的机械师或其他东西来模拟指针的行为