【发布时间】:2015-06-08 14:37:21
【问题描述】:
是否可以在不使用 javascript 中的持有者对象的情况下保留对象引用? 目前,当一个对象被覆盖时,我有时会丢失对下面 sn-p 中所示的“当前”对象状态的引用;
有没有办法将“指针”放入数组中?
编辑 对于提出的问题:
我拥有的对象是对表单字段的引用。其中一些是文本字段,一些是文本区域,一些是复选框。
我希望在它们是什么类型的直接引用旁边保留一张地图。
基本上是这样的
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/checkboxes 数组作为检查点来验证字段是/应该针对哪种类型运行。
目前我使用
function datefields() { return [this.text1]; };
但我想知道是否有比在需要检查时实例化一个新数组更好的方法。
我知道有一种方法可以让观察者模仿指针行为,我已经对这些进行了修改并取得了一些不错的结果,我只是好奇是否还有其他我不知道的方法。
function myObject() {
this.myvalue = null;
this.arr = [this.myvalue];
}
myObject.prototype.alter = function() {
this.myvalue = "hello";
}
var x = new myObject();
var elem = document.getElementById('results');
function log(message) {
elem.appendChild(document.createTextNode(message));
elem.appendChild(document.createElement('br'));
}
log("x.myvalue = "+x.myvalue);
log("x.arr[0] = "+x.arr[0]);
log("calling alter");
x.alter();
log("x.myvalue = "+x.myvalue);
log("x.arr[0] = "+x.arr[0]);
<div id="results"></div>
【问题讨论】:
-
每当根obj改变时,根和引用之间的引用链接都将失效
-
为简单起见,请使用
console.log() -
@NayukiMinase
console.log()代码 sn-ps,真的吗? -
这根本不可能,阅读此stackoverflow.com/questions/10231868/pointers-in-javascript(不要只阅读已接受的答案)
-
所以您想将
myObject.arr[0]指向myObject.myvalue并在.myvalue更改时更新.arr?您可以使用 getter 和 setter 来实现它,例如:jsfiddle.net/xcu7ku2m - 不要将其发布为答案,因为我不清楚它是否是您正在寻找的。span>
标签: javascript