簡體   English   中英

如何使用['key']表示法向對象添加屬性?

[英]How to add a property to an object using the ['key'] notation?

JavaScript文檔指出,為了向現有對象添加屬性,您可以執行以下操作。

data["property"] = value;

要么

data.property = value;

就我而言,我試圖在添加之前將我的模型ID(由服務器接收)轉換為字符串,例如:

data.model[id.toString()] = false;

但是我收到以下錯誤:

Uncaught TypeError: Cannot set property '1' of undefined

我最初雖然是因為您不能使用字母數字字符串或某種奇怪的限制,所以我嘗試用一​​個字母為ID加上前綴,例如:

var id = 'k' + id.toString();

還是不行! 但是,當我使用Chrome的“控制台”面板並手動進行操作時,例如:

var data = {};
var data['1'] = false;

那行得通,那我在做什么錯呢?

data.['key'] = value;的正式名稱是什么data.['key'] = value; 反正操作? 這將有助於您了解何時嘗試向Google尋求幫助。


更新1 :好的,似乎是由於以下原因:

var data = localStorage.getItem('model.state');

當我將其更改為:

var data = {};

它突然開始工作了!


更新2 :我知道我在做什么錯(但是仍然不確定為什么它會給我一個“未定義”錯誤……有人嗎?)。

我做了以下工作:

var data = localStorage.getItem('model.state');
if (data) data = JSON.parse(data);

並且它開始按預期工作。 抱歉...謝謝大家的幫助!

因為data.model所以收到此錯誤。 為了防止引發錯誤,可以使用:

data.model = data.model || {};
data.model[id.toString()] = false;

這是以下內容的簡稱:

if (!data.model) {
  data.model = {};
}
data.model[id.toString()] = false;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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