JavaScript:声明构造函数中的所有成员以便于记录?

JavaScript:声明构造函数中的所有成员以便于记录?,javascript,coding-style,Javascript,Coding Style,是否应该声明并初始化构造函数函数中已经存在的类的所有成员,即使在以后设置为有意义的值?您更喜欢null还是undefined function MyClass() { /** @type {Number} [describtion] */ // first approach this._member1 = null; /** @type {Object} [describtion] */ // second approach this._member2 = undefine

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

这完全取决于你的需要

如果未将值设置为variable,则默认情况下该值被视为未定义

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

在我看来,您应该在类函数中声明所有必需的属性,并根据需要附加其他属性。(即,如果从未对对象调用
函数work()
,则它将永远不需要
\u member3


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

这一切都取决于您的需要。如果您不将值设置为variable,则默认情况下会将其视为未定义。“null”有它自己的用途,例如当我导入API数据时,我的对象的一些属性有一个“null”值,表示没有设置任何内容。而未定义的属性意味着它不存在于对象中。(但这是从API数据的角度看的).IMO,您应该在类函数中声明所有必需的属性,并根据需要附加其他属性。(例如,if function work())从不在对象上调用,它将永远不需要_member3…谢谢,从不调用函数是一个很好的观点。还要记住,JS是一种动态语言,即使从构造函数生成对象,对象也是可转换的。不要试图模仿静态语言习惯来限制语言的表达能力。作为答案添加,所以你可以标记这个问题已解决。你还有什么需要询问的吗?