什么时候可以为JavaScript名称空间、类型或方法别名?

什么时候可以为JavaScript名称空间、类型或方法别名?,javascript,alias,Javascript,Alias,我们的团队正在参考 其中一节指出,“避免访问别名类型的属性,除非它是枚举”,但没有详细说明原因 根据我们运行的示例代码,对方法使用别名会更改“this”的上下文 但是,我找不到一个清楚的例子来说明为什么不应该访问别名类型的属性?有人举过这样做不好的例子吗?没有JavaScript名称空间,方法,或类型。好吧,也许有些方法(让我们称它们为函数)之类的东西,但是名称空间和类型对不同的人来说意味着不同的东西。对谷歌来说,他们意味着你在他们的风格指南中找到的任何东西 是一种没有C++或java(多态、继

我们的团队正在参考

其中一节指出,“避免访问别名类型的属性,除非它是枚举”,但没有详细说明原因

根据我们运行的示例代码,对方法使用别名会更改“this”的上下文


但是,我找不到一个清楚的例子来说明为什么不应该访问别名类型的属性?有人举过这样做不好的例子吗?

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

是一种没有C++或java(多态、继承、命名空间、打字、EVE对象等)的一些特征的原型语言。谷歌风格指南(这不是同类指南中唯一的一个,参见道格拉斯·克罗克福德)提出了许多风格限制。这些约束通常没有语法价值,但本质上只是文体(正如我的评论所提到的)

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


此外(这只是我的说法),别名类型在其他语言中有相当具体的含义;我认为在JS的上下文中使用它是愚蠢的,因为JS对类型有一个不可信任的模糊概念。

如果你说哪个部分-页面搜索不会从未展开的部分中找到文本,那会很有帮助。找到它-正如它所说的“名称空间应该只使用
goog.scope
来别名”,我认为这会破坏闭包编译器中的一些模式识别。一个更好的问题是,你为什么要遵循GoogleJS风格指南?这是出了名的可怕和谷歌特有的。@DavidItarenco:事实上,大多数与JS相关的东西我都同意。由于枚举和类型通常都是google编造的,所以他们可以设置规则。没有人使用“别名类型”,使用短路径调用也没关系。假设每次都使用document.documentElement.children[0]。appendChild而不是body.appendChild。。。