何时可以为JavaScript命名空间,类型或方法添加别名?

时间:2014-08-12 20:26:41

标签: javascript alias

我们的团队正在引用Google's JavaScript Style Guide

一节说明,"避免访问别名类型的属性,除非它是一个枚举"但没有详细说明原因。

别名方法会改变"这个"的上下文。根据我们基于this article运行的示例代码。

但是,我无法找到一个明确的示例,说明为什么不应该访问别名类型的属性?有没有人举例说明为什么会这么糟糕?

1 个答案:

答案 0 :(得分:2)

没有JavaScript namespacemethodtype这样的东西。好吧,也许有类似方法的东西(让我们只称它们为函数),但名称空间和类型对不同的人来说意味着不同的东西。对谷歌来说,它们意味着你在他们的风格指南中找到的任何东西。

JavaScript是一种原型语言,没有C ++或Java中的一些功能(多态,继承,命名空间,打字,Eve对象等)。谷歌风格指南(它不是唯一的一种,见道格拉斯克罗克福德)提出了许多风格约束。这些约束通常没有句法价值,但本质上只是风格(正如我的评论所提到的)。

例如,所有名称空间都需要通过goog.scope进行别名化。这可以用于闭包编译器兼容性,可读性,调试,或者仅仅因为它看起来很漂亮。要解决您的问题,访问别名类型的属性本身并不坏,甚至您提出的问题(丢失this上下文)也可以通过.apply(...)或{{{{}}来解决。 1}}。

此外(这只是我的咆哮),术语别名类型在其他语言中具有非常具体的含义;我认为在JS的上下文中使用它是愚蠢的 - 这对于类型开头具有令人难以置信的模糊概念。

相关问题