使用Javascript进行面向对象编程 - 构造函数

时间:2009-05-12 01:41:48

标签: javascript oop object function

我见过很多这个......

function myObject(data) {
       var myData = data;
}

myObject.prototype.doSomething = function () {
      alert("I did something!");
}

但Visual Studio上的intellisense给了我一个函数的.constructor,这会让我相信这是正确的......

function myObject() {
     var myData;

     this.constructor = function(data) {
         myData = data;
     }

     this.doSomething = function() {
         alert("I did something!");
     }
}

我喜欢第二种方法的封装,但几乎每个人都使用“.prototype”。 是否有任何理由特别这样做,或者可以封装所有这样的类方法。

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

这根本不是constructor所做的。它只是返回功能。所以在你的情况下,它会返回myObject。例如:

function someObject() {
  this.a = 5;
}
var obj = new someObject();
obj.constructor; // Would return someObject

有关constructor属性的详细信息,请参阅this

使用prototype的关键是你可以在构造函数创建后扩展它们。因此,您可以使用它来为所有String对象添加方法。

String.prototype.myFunc = function(){/*Some code*/};
相关问题