JavaScript:声明构造函数中的所有成员,以备文档之用
JavaScript: declare all members in constructor for documentary purposes?
是否应该声明并初始化构造函数函数中已经存在的类的所有成员,即使稍后设置为有意义的值?你喜欢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是一种动态语言,即使从构造函数生成对象,对象也是可转换的。不要试图模仿静态的语言习惯来限制语言的表达能力。
相关文章:
- 使用promise和mongoose对文档进行排序
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- Ajax请求文档就绪会导致jquery加载缓慢
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 谷歌文档表面引擎
- 来自文档或下一个静态父级的事件委派
- 如何将childNodes用于XML文档
- 文档就绪提供了错误的选择器高度
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- BrowserId登录请求在文档加载时被调用
- 从Javascript和Php变量创建Html模板文档
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在jquery文档准备好之前加载Modernizr
- 如何判断何时将dom节点添加到文档中
- 无法获取文档.GetElementById工作正常
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- 在 IE10 中访问对象的“文档”成员,而不知道其类型
- JavaScript:声明构造函数中的所有成员,以备文档之用
- 从成员的google文档生成日程表'可用性