不同Javascript对象表示法的名称

时间:2013-04-25 13:14:58

标签: javascript

是否有名称用于描述您在Javascript中定义对象的不同方法?

这种方法更像“类似”:

function MyObject() {

    this.aMethod= new function(){
    };

    this.anotherMethod = new function(){
    };
}

另一种更“动态”的技术。

MyObject = new Object();
MyObject.aMethod= new function(){
};
MyObject.anotherMethod = new function(){
};

我一直在以各种方式使用这两种技术,我理解每种技术的好处,但对于我的生活,我不知道如何在与colleauges讨论这两种技术时使用这两种技术。 / p>

这些技术有名字吗?

2 个答案:

答案 0 :(得分:3)

在第一种情况下,MyObject构造函数,因为它应该使用new调用:

var obj = new MyObject();

在第二种情况下,MyObject只是一个对象,您可以为其指定属性。它没有特殊名称。

请注意,在这两种情况下MyObject都有不同的值。第二种情况下的MyObject相当于obj

第三种方法是使用对象initilizer或“object literal”:

var obj = {
    aMethod: function(){},
    anotherMethod: function(){}
};

答案 1 :(得分:2)

您的第一个示例是对象构造函数,而第二个示例只是将公共方法作为属性添加到对象。作为旁注,对于更“类似”的行为,请查看module pattern

var MyObject = (function() {

  var privateStaticVariable = 0;

  var my = function() {
    var self = this;

    var privateInstanceVariable = 0;

    function privateInstanceMethod() {

    }

    self.publicInstanceVariable = 0;

    self.publicInstanceMethod = function() {

    };
  };

  function privateStaticMethod() {

  };

  return my;
});