在JavaScript中使用构造函数有什么好处?

时间:2011-06-09 14:17:56

标签: javascript

我正在努力重构一个庞大且未记录的JavaScript库。建议的重构之一是在代码中实现构造函数而不是动态构造对象。示例如下:

而不是:

var myLibObj = new Object();
myLibObj.SomeProperty =
{
   FooFunction: function(){/*Do Something Cool*/}
}

建议的更改:

function myLibObjConstructor(){
  this.SomeProperty = {FooFunction: function(){/*Do Something Cool*/}}
  return this;
}

var myLibObj = new myLibObjConstructor();

更改代码有什么好处吗?

3 个答案:

答案 0 :(得分:2)

一个优点是myLibObjConstructor可以在其他地方重复使用

答案 1 :(得分:1)

如果现有的代码已经在不需要构造函数的情况下工作,那么转向构造函数的好处可能是边缘的或不存在的。

但是,使用构造函数的一般优点是:

  • 对象实例具有“类型”,即您可以检查instanceofconstructor,仅根据对象实例做出决策。
  • 最重要的是,你得到了封装。您可以封装“私有”属性,继承等,从而产生更清晰,更便携的代码。
  • 使用构造函数比首先实例化通用对象和处理属性更简洁,更传统。

答案 2 :(得分:0)

换句话说,你的问题归结为原型与构造函数。 这是一个很好的问题,并且已经有很多关于它的文章。包括这里。

How to "properly" create a custom object in JavaScript?

Advantages of using prototype, vs defining methods straight in the constructor?

这里也很好读: http://mckoss.com/jscript/object.htm