[英]How can I store reference to a variable within an array?
我正在嘗試創建一個將字符串映射到變量的數組。 似乎該數組存儲變量的當前值,而不是存儲對變量的引用。
var name = "foo";
var array = [];
array["reference"] = name;
name = "bar";
// Still returns "foo" when I'd like it to return "bar."
array["reference"];
有沒有辦法讓數組引用變量?
將 object 放入數組中:
var name = {};
name.title = "foo";
var array = [];
array["reference"] = name;
name.title = "bar";
// now returns "bar"
array["reference"].title;
你不能。
JavaScript總是按值傳遞。 一切都是object; var
存儲指針,因此它通過指針的值傳遞。
如果您的name = "bar"
應該在 function 內,則您需要傳入整個數組。 然后 function 需要使用array["reference"] = "bar"
更改它。
順便說一句, []
是一個數組文字。 {}
是 object 文字。 該array["reference"]
有效,因為 Array 也是一個 object,但該數組旨在通過從 0 開始的索引訪問。 您可能想改用{}
。
並且foo["bar"]
等價於foo.bar
。 如果鍵可以是動態的,例如foo[bar]
,與 foo.bar 完全不同(或者如果您想使用像 Google 的 Closure Compiler 這樣的最小化器),更長的語法會更有用。
嘗試將 object 推送到數組並更改其中的值。
var ar = [];
var obj = {value: 10};
ar[ar.length] = obj;
obj.value = 12;
alert(ar[0].value);
我保存參考的解決方案是通過 function 代替:
如果您要引用的變量名為myTarget
,則使用:
myRef = function (newVal) {
if (newVal != undefined) myTarget = newVal;
return myTarget;
}
要讀取值,請使用myRef();
. 要設置值,請使用myRef(<the value you want to set>);
.
有用的是,您還可以將其分配給數組元素:
var myArray = [myRef];
然后使用myArray[0]()
讀取並使用myArray[0](<new value>)
寫入。
免責聲明:我只用數字目標對此進行了測試,因為那是我的用例。
我保存參考的解決方案是通過 function 代替:
如果您要引用的變量名為“myTarget”,則使用:
myRef = function (newVal) {
if (newVal != undefined)
myTarget = newVal;
return myTarget;
}
要讀取該值,請使用 myRef();。 要設置值,請使用 myRef(value_to_set);。
有用的是,您還可以將其分配給數組元素:
var myArray = [myRef];
然后使用 myArray0 讀取並使用myArray[0](value_to_set)
寫入。
免責聲明:我只用數字目標對此進行了測試,因為那是我的用例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.