![](/img/trans.png)
[英]Unable to add a property to an object using either the dot notation or the indexer notation?
[英]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.