【问题标题】:Objects as properties in Javascript对象作为 Javascript 中的属性
【发布时间】:2011-10-03 20:17:08
【问题描述】:

我正在定义一个 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;
}

我尝试在 MyObject 中像这样声明 obj:obj = new Object;没有运气,obj 不会被解释为属性。

关于我做错了什么的任何线索?

谢谢

【问题讨论】:

    标签: javascript oop object


    【解决方案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';
    

    【讨论】:

    • 是的。有用。感谢托马斯的回答。我认为this.obj['x'] = 'val1';this.obj = {'x': 'val1', 'y': 'val2'}; 是等价的!有什么区别?
    • djeetee,如果它解决了您的问题,请不要忘记投票并选择正确的答案。
    • @djeetee:它们在大多数情况下是等价的。当您需要作为 JavaScript 关键字的标识符时,可以使用方括号语法,例如:obj['var'] - obj.varobj.'var' 不起作用。
    【解决方案2】:

    使用对象文字表示法通常是最简单的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多