JavaScript:声明构造函数中的所有成员,以备文档之用

JavaScript: declare all members in constructor for documentary purposes?

本文关键字:文档 成员 声明 构造函数 JavaScript      更新时间:2023-09-26

是否应该声明并初始化构造函数函数中已经存在的类的所有成员,即使稍后设置为有意义的值?你喜欢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";
};

这一切都取决于您的需求。

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

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

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

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