Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
本机JavaScript函数是什么;“超全局”-喜欢_Javascript_Types_Constructor_Scope_Native - Fatal编程技术网

本机JavaScript函数是什么;“超全局”-喜欢

本机JavaScript函数是什么;“超全局”-喜欢,javascript,types,constructor,scope,native,Javascript,Types,Constructor,Scope,Native,像Function、Object、Array这样的原生JavaScript构造函数/函数是否在任何范围内都可用?它们是由全局对象或类似对象在同一级别或更高级别继承的吗 例如,MooTools在其自动执行函数中包含以下行: var Function = this.Function; 所以我问自己,这些本机构造函数在什么情况下变得不可用?可能在服务器端还是严格的JS?或者缓存本地引用只是性能问题?但如果是这样,为什么不这样做: var Function = Function; 他们有相同的名字,

Function
Object
Array
这样的原生JavaScript构造函数/函数是否在任何范围内都可用?它们是由全局对象或类似对象在同一级别或更高级别继承的吗

例如,MooTools在其自动执行函数中包含以下行:

var Function = this.Function;
所以我问自己,这些本机构造函数在什么情况下变得不可用?可能在服务器端还是严格的JS?或者缓存本地引用只是性能问题?但如果是这样,为什么不这样做:

var Function = Function;

他们有相同的名字,所以你不能这么做

(function() {
    var Function = Function;

    return Function;
})(); // undefined
为什么一开始就这么做?据说是为了防止用户错误或重新定义,同时也为了减少引擎必须查找以查找内容的范围链的数量。相关博文:

当然,
Function
不是只读的,因此即使有人在全局名称空间中重新定义了
Function
,也不会有帮助。但是,任何做这件事的人都应该得到它


编辑:如果他们真的想防止用户错误,一个简单的方法是:

var Function = (function() {}).constructor;

但是如上所述,这是毫无意义的。

他们有相同的名字,所以你不能这么做

(function() {
    var Function = Function;

    return Function;
})(); // undefined
为什么一开始就这么做?据说是为了防止用户错误或重新定义,同时也为了减少引擎必须查找以查找内容的范围链的数量。相关博文:

当然,
Function
不是只读的,因此即使有人在全局名称空间中重新定义了
Function
,也不会有帮助。但是,任何做这件事的人都应该得到它


编辑:如果他们真的想防止用户错误,一个简单的方法是:

var Function = (function() {}).constructor;

但是如上所述,这是毫无意义的。

本机构造函数是全局对象(全局对象的属性),因此是的,它们总是可用。@ŠimeVidas,这不是永远正确的。我可以很容易地覆盖它们,例如
Function=6以后引用它们有一些棘手的方法,但是全局引用肯定会以这种方式丢失。本机构造函数是全局对象(全局对象的属性),所以是的,它们总是可用的。@ŠimeVidas,这不是永远正确的。我可以很容易地覆盖它们,例如
Function=6以后有一些棘手的方法来引用它们,但是全局引用肯定会以这种方式丢失。minitech,你有链接吗?@dollarVar:啊,很抱歉打断了它。minitech,你有链接吗?@dollarVar:啊,很抱歉打断了。