原生 JavaScript 函数是否类似于“超全局”?
Are native JavaScript functions something "superglobals"-like?
原生JavaScript构造函数/函数(如Function
,Object
,Array
在任何范围内总是可用的吗?它们是由全局对象继承的还是由同一级别甚至更高级别的东西继承的?
例如,MooTools 在其自执行函数中包含以下行:
var Function = this.Function;
所以我问自己,是否存在这些本机构造函数不可用的情况?也许在服务器端或严格的 JS?还是缓存本地引用只是一个性能问题?但如果是这样,为什么不这样做呢:
var Function = Function;
它们具有相同的名称,因此您不能这样做。
(function() {
var Function = Function;
return Function;
})(); // undefined
至于为什么首先这样做?据说是为了防止用户错误或重新定义,并且还可以减少引擎必须查找才能找到某些东西的范围链的数量。相关博客文章:http://blog.minite.ch/?p=47
当然,Function
不是只读的,所以即使有人在全局命名空间中重新定义了Function
也无济于事。任何这样做的人都应该得到它,虽然=)
编辑:如果他们真的想防止用户错误,一个万无一失的方法是:
var Function = (function() {}).constructor;
但如上所述,这是毫无意义的。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 正在全局范围中查找JavaScript函数
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 全局对象是属于哪个类的对象
- Javascript全局onclick监听器
- 从Javascript方法返回全局变量
- 访问jsrender模板中的全局javascript变量并更新它
- javascript无法重新定义函数内部的全局对象
- javascript 中的全局函数
- cordova:例外:财产'requestFileSystem'的[对象全局]不是函数
- 全局安装gull后出错
- AngularJS中的封装窗口全局变量
- 全局标志仅与第一个匹配项匹配的Regexp
- javascript隐式全局变量
- 原生 JavaScript 函数是否类似于“超全局”?
- 隐含全局和全局对象
- TypeScript/JavaScript:如何扫描所有全局类(并按超类进行筛选)
- 将javascript变量设置为php超全局变量