var data = {};
....
data[someprop][someotherprop] = 'bla bla'
我得到無法設置屬性爲對象
Uncaught TypeError: Cannot read property ... of undefined
和Cannot set property of...
是的,對象不具有這些屬性..yet,但我將它們設置在該行地方我得到錯誤哈哈。那麼,那是怎麼回事?
var data = {};
....
data[someprop][someotherprop] = 'bla bla'
我得到無法設置屬性爲對象
Uncaught TypeError: Cannot read property ... of undefined
和Cannot set property of...
是的,對象不具有這些屬性..yet,但我將它們設置在該行地方我得到錯誤哈哈。那麼,那是怎麼回事?
如果someprop
和someotherprop
是變量,理查德·D的答案是正確的,如果他們是硬編碼的字符串,你可以這樣寫你的代碼:
var data = {someprop:{someotherprop: 'value'}};
但是,如果它們存儲在變量的值,你真的 - 真的想所有東西都塞進一個單一的線,嘗試這樣的事情:
var data = {window.someprop : {window.someotherprop: 'value'}};
其中窗口可以被替換任何物體,如果someprop
值本身是一個對象的屬性:
var data = {someForm.name : { formElement.name : formElement.value}};
或者jQuery的對象,因爲你的標籤建議你使用jQuery:
var data= {$('#formId').attr('name'):{$('#formSelect').attr('name'): $('#formSelect').val()}};
注意:不推薦使用jQuery示例,因爲id選擇器在同一元素上使用兩次。 jQuery將兩次掃描DOM樹,所以你最好將你的#formSelect
元素存儲在某個變量中。
您正嘗試將屬性分配給對象不存在,運行語句相當於
data.someprop.someotherprop
解析器將不會自動創建data.someprop
你,因此錯誤。
您必須初始化someprop
data.someprop = {};
data['someprop']['someotherprop'] = 'gw ganteng';
您需要設置不同勢步的屬性是這樣的:
var data = {};
data[someprop] = {};
data[someprop][someotherprop] = 'bla bla';
對象數據將不會有一個屬性名爲「someprop」你asssign前它。
你需要在屬性名稱周圍加引號,否則代碼仍然不起作用。見[這個jsFiddle](http:// jsfiddle。net/zXETB/4 /) – 2012-03-30 10:34:40
您需要創建data[someprop]
第一:
var data = {};
data[someprop] = {};
data[someprop][someotherprop] = 'bla bla'
答案中的代碼和jsFiddle中的代碼不相同。取出屬性名稱的引號會導致Javascript錯誤。 – 2012-03-30 10:30:59
@AnthonyGrist我知道。我假設'someprop'和'somepotherprop'設置在某個地方。 – 2012-03-30 10:39:50
var data = {};
data[someprop] = {someotherprop:'bla bla'};
否則data[someprop]
將不確定
var data = {someprop:{someotherprop:'bla bla'}}; :) – sasjaq 2012-03-30 10:39:20
我認爲問題在於你試圖在一個對象中設置一個屬性,這個對象本身就是一個還不存在的屬性。如果你嘗試在一行中創建'someprop',然後在其中設置'someotherprop',會發生什麼? – 2012-03-30 10:27:19
請顯示實際的代碼。此外,在尚不存在的屬性中設置屬性將不起作用。你必須首先設置'someprop' – 2012-03-30 10:27:47