2011-10-03 73 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; 
}