是否应该声明并初始化已经在构造函数函数中的类的所有成员,即使稍后设置为有意义的值?你更喜欢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";
};
答案 0 :(得分:0)
这完全取决于您的需求。
如果未将值设置为变量,则默认情况下将其视为未定义。
“null”有自己的用途,例如当我导入API数据时,我的对象的某些属性具有“null”值,表示没有设置任何内容。虽然未定义的属性意味着它不存在于对象中。 (但这是从API数据的角度来看)。
IMO,您应该在类函数中声明所有REQUIRED属性,并根据需要附加其他属性。 (即,如果您的对象永远不会调用function work()
,则永远不会需要_member3
另外,请记住,JS是一种动态语言,即使从构造函数生成,对象也可以转换。不要试图模仿静态语言习惯来限制语言的表达能力。