JavaScript:在构造函数中声明所有成员以用于文档目的?

时间:2014-09-13 15:42:36

标签: javascript coding-style

是否应该声明并初始化已经在构造函数函数中的类的所有成员,即使稍后设置为有意义的值?你更喜欢null还是undefined

function MyClass() {
  /** @type {Number} [describtion] */  // first approach
  this._member1 = null;

  /** @type {Object} [describtion] */  // second approach
  this._member2 = undefined;
}

MyClass.prototype.work = function() {  // called later
  this._member1 = 42;
  this._member2 = { 'foo': 13 };

  /** @type {String} [describtion] */  // third approach
  this._member3 = "bar";
};

1 个答案:

答案 0 :(得分:0)

这完全取决于您的需求。

如果未将值设置为变量,则默认情况下将其视为未定义。

“null”有自己的用途,例如当我导入API数据时,我的对象的某些属性具有“null”值,表示没有设置任何内容。虽然未定义的属性意味着它不存在于对象中。 (但这是从API数据的角度来看)。

IMO,您应该在类函数中声明所有REQUIRED属性,并根据需要附加其他属性。 (即,如果您的对象永远不会调用function work(),则永远不会需要_member3

另外,请记住,JS是一种动态语言,即使从构造函数生成,对象也可以转换。不要试图模仿静态语言习惯来限制语言的表达能力。