1

是否有一个名称来描述您可以在 Javascript 中定义对象的不同方式?

有一种更“类”的方法:

function MyObject() {

    this.aMethod= new function(){
    };

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

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

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

我一直在以各种方式使用这两种技术,并且我了解每种技术的好处,但是对于我的生活,在与同事讨论时,我不知道如何调用这两种技术。

这些技术有名字吗?

4

2 回答 2

3

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

var obj = new MyObject();

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

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

第三种方法是使用对象初始化器或“对象字面量”:

var obj = {
    aMethod: function(){},
    anotherMethod: function(){}
};
于 2013-04-25T13:18:37.893 回答
2

您的第一个示例是Object Constructor,而第二个示例只是将公共方法作为属性添加到对象。附带说明一下,对于更“类”的行为,请查看模块模式

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;
});
于 2013-04-25T14:05:35.490 回答