我想調用一個對象。通過串聯引用JS對象
的方式我目前做:
var key = object_0
我想做到這一點
var key = "object_" + questionId;
的方式,但在調用串連object_0我不獲取對象信息 時我做一個:
console.log(key)
任何洞察力將是真棒。
我想調用一個對象。通過串聯引用JS對象
的方式我目前做:
var key = object_0
我想做到這一點
var key = "object_" + questionId;
的方式,但在調用串連object_0我不獲取對象信息 時我做一個:
console.log(key)
任何洞察力將是真棒。
簡答:全局範圍+括號。
window['object_'+questionId] = 'foo';
console.log(window['object_'+questionId]); // 'foo'
感謝您提供簡短答案。 – newneub
如果您使用ES5,則可以創建新的空對象。以下是具體步驟:
1,創建空的對象
var o = {};
2.使用括號產生一個對象的新的關鍵 - ("object_" + questionId)
- 這將迫使解析器首先在括號計算表達式
3.assign值到新添加的鍵
o[("object_" + questionId)] = XXX;
然後console.log(o)
將輸出{object_0: XXX}
或者只是將questionId作爲關鍵字存儲在沒有多餘前綴的對象中:) – Andy
可以使用窗口對象(訪問全局變量只):
var object_0 = { p: 42 },
questionId = 0,
key = "object_" + questionId;
document.write(window[key].p);
但我建議改變數據結構以更簡潔的風格:
var questions = { 200: { p: 42 }},
questionId = 200;
document.write(questions[questionId].p);
這將是一個容易得多,如果你可以得到屬性,而不是整個對象的,那麼它只是'OBJ [「object_」 + questionId]' – adeneo
如果你認爲你需要使用動態變量,你可能做錯了什麼。你應該把所有的對象放到一個數組中,然後使用'questions [questionId]'。 – Barmar