簡體   English   中英

如何在數組中存儲對變量的引用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM