我观看了John Resig 在JavaScript库设计演示中的最佳实践 ; 一张幻灯片建议"调整"对象构造函数,以便实例化它自己.
function jQuery(str, con) {
if (window === this) {
return new jQuery(str, con);
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
new jQuery("#foo")随之而来的,变成了jQuery("#foo").
我认为这很有趣,但我没有在我自己的代码中编写类似的构造函数.
过了一会儿,我在这里看了一篇文章.(对不起,我不记得哪个或者我提供了一个链接.我会更新问题,如果我能再次找到它.)其中一条评论说这样做是不好的做法躲避new程序员,但没有详细说明.
我的问题是,上述一般认为好,坏,或无动于衷,为什么?
当人们忘记new在"类"功能面前使用操作符时,这是一种防御性技术.
逻辑是如果没有调用函数new,那么全局作用域仍然是当前作用域(而不是新实例),因此我们只使用new运算符调用相同的函数.
但是如果你问我,正确的做法就是抛出一个错误,让开发人员知道它犯了错误,而不仅仅是"接受"它.
但是,嘿,我猜它是根据jQuery的口头禅:
'而不是让用户编写高质量的代码,启用/强制他们编写不合逻辑和无效的代码'.
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |