2011-10-03 72 views
0

我定義JavaScript對象並設置其屬性和方法是這樣的:對象作爲屬性在Javascript

function MyObject() 
{ 
    this.prop1 = 1; 
    this.prop2 = 2; 

    this.meth1=meth1; 
} 

function meth1() 
{ 
    // do soemthing 
} 

一切都很好。我的問題是我怎樣纔能有一個對象是MyObject的屬性?我需要的是一個「關聯數組」作爲一個屬性的東西沿着這些路線:

function MyObject() 
{ 
    this.obj['x'] = 'val1'; 
    this.obj['y'= = 'val2'; 

    this.prop1 = 1; 
    this.prop2 = 2; 

    this.meth1=meth1; 
} 

我曾嘗試宣告OBJ在爲MyObject這樣的:obj = new Object;沒有運氣,obj不被解釋爲屬性。

任何線索,我做錯了什麼?

感謝

回答

1

你的意思是:

function MyObject() { 
    this.obj = {'x': 'val1', 'y': 'val2'}; 

    this.prop1 = 1; 
    this.prop2 = 2; 

    this.meth1=meth1; 
} 

現在,你可以說:

new MyObject().obj.x //`val1` 

替代語法:

this.obj = {}; 
this.obj.x = 'val1'; 
this.obj.y = 'val2'; 
+0

是啊。有用。感謝Tomasz的答案。我認爲'this.obj ['x'] ='val1';'和'this.obj = {'x':'val1','y':'val2'};'相當於!有什麼不同? – djeetee

+0

djeetee,如果它解決了您的問題,請不要忘記進行投票並選擇正確的答案。 – Asmor

+0

* @ djeetee *:在大多數情況下它們是相同的。當你需要一個JavaScript關鍵字的標識符時,可以使用方括號語法,例如:'obj ['var']' - 'obj.var'或'obj.'var''將不起作用。 –

0

通常最容易使用的對象文字符號:

function MyObject() 
{ 
    // obj as an object literal 
    this.obj = { 
    x: "val1", 
    y: "val2", 
    z: "val3" 
    }; 

    this.prop1 = 1; 
    this.prop2 = 2; 

    this.meth1=meth1; 
}