亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

淺析JavaScript中兩種類型的全局對象/函數

2019-11-20 21:31:14
字體:
來源:轉載
供稿:網友

這里所說的JavaScript指瀏覽器環境中的包括宿主環境在內的。第一種是ECMAScript Global Object,第二種是宿主環境(Host)下的全局對象/函數。

一、核心JavaScript內置對象,即ECMAScript實現提供的不依賴于宿主環境的對象

這些對象在程序執行之前就已經(實例化)存在了。ECMAScript稱為The Global Object,分為以下幾種

1, 值屬性的全局對象(Value Properties of the Global Object)。有NaN,Infinity,undefined。

2, 函數屬性的全局對象(Function Properties of the Global Object)。有eval,parseInt,parseFloat,isNaN,isFinite,decodeURI,encodedURI,encodeURIComponent

3,構造器(類)屬性的全局對象(Constructor Properties of the Global Object)。有Object,Function,Array,String,Boolean,Number,Date,RegExp,Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError。

4,其它屬性的全局對象(Other Properties of the Global Object),可以看出成是Java中的靜態類,可以直接用類名+點號+方法名使用。有Math,JSON。

ECMAScript規范提到這些全局對象(The Global Object)是具有Writable屬性的,即Writable為true,枚舉性(Enumerable)為false,即不能用for in枚舉。ECMAScript有這么一段

Unless otherwise specified, the standard built-in properties of the global object have attributes {[[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true}.


雖然規范提到The Global Object是可以被重寫的,但不會有誰去重寫它們的。這里僅僅做個測試。

復制代碼 代碼如下:

NaN    = 11;
eval   = 22;
Object = 33;
Math   = 44;

alert(NaN);
alert(eval);
alert(Object);
alert(Math);<BR>

分別取值屬性的全局對象, 函數屬性的全局對象,構造器(類)屬性的全局對象,其它屬性的全局對象NaN,eval,Object,Math。結果如下

結果可以看出除了NaN在IE9(pre3)/Safari不能被重寫外,其它都被重寫了。這里只是列舉了四個,感興趣的可以將以上所有的The Global Object一一測試下。這里想表達的是核心JavaScript內置對象一般是可以被重寫的 ,雖然沒人這么干。

下面測試下其可枚舉性

復制代碼 代碼如下:

for(var a in NaN){
    alert(a);
}
for(var a in eval){
    alert(a);
}
for(var a in Object){
    alert(a);
}
for(var a in Math){
    alert(a);
}

所有瀏覽器都沒有彈出,即屬性不被枚舉。感興趣的可以將以上所有的The Global Object的枚舉性一一測試下。當然對于有些瀏覽器如Firefox,某些Global Object被重寫后又是可以被枚舉的。

二、宿主環境提供的全局對象/函數

如window,alert,setTimeout,document,location等,多數瀏覽器都會限制其重寫

復制代碼 代碼如下:

window = 55;
alert(window);

該句在IE下會出錯提示非法復制,后面的彈出框沒有執行。其它瀏覽器則當window=55不存在,仍然彈出了window。

再重寫下alert

復制代碼 代碼如下:

alert = 55;
console.log(alert);

IE下提示報錯,Firefox/Chrome/Safari/Opera竟然被重寫了,從對應的控制臺可以看到輸出了55??梢钥闯鰧τ谒拗鳝h境提供的全局對象/函數,有的瀏覽器不支持重寫,有的則可以重寫 。

以下是兩種方式聲明全局變量

復制代碼 代碼如下:

a1 = 11;
var a2 = 22;

for(a in window){
    if(a=='a1'||a=='a2'){
        alert(a)
    }
}

上述代碼在IE中不會彈出信息框,在IE中內部大概如下
復制代碼 代碼如下:

//IE
with(host_object){//window
    with(global_object){//Global
        a1 = 11;
        var a2 = 22;
    }   
}

即a1,a2是作為上面說的第一種,JS引擎提供的Global對象上的屬性,而非第二種宿主環境提供的window對象上的屬性。因此IE中for in window時a1,a2都不存在。如果IE中提供對象Global對象的引用,沒準下面的代碼可以彈出信息框。
復制代碼 代碼如下:

for(a in Global){
    if(a=='a1'||a=='a2'){
        alert(a)
    }
}

Firefox/Safari/Chrome/Opera中內部大概是下面的樣子
復制代碼 代碼如下:

//Firefox/Safari/Chrome/Opera
with(host_object){//window
    a1 = 11;
    var a2 = 22;
    with(global_object){//Global
    }   
}

即a1,a2是作為上面說的第二種,宿主環境提供的全局對象window上的屬性。因此for in window時a1,a2都存在,彈出了信息框。

再看第三者方式聲明全局變量window.a3 = 33,這樣是顯示的把a3掛在window上作為window的屬性,因此在所有瀏覽器中for in window時都能獲取到a3。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕av一区二区| 欧美性猛交xxxx黑人猛交| 国产成人精品一区二区在线| 在线观看日韩视频| 国产精品美女主播在线观看纯欲| 91精品国产成人| 亚洲色图偷窥自拍| 一区二区亚洲欧洲国产日韩| 亚洲欧洲高清在线| 欧美激情乱人伦| 91性高湖久久久久久久久_久久99| 欧洲成人在线观看| 日韩欧美精品在线观看| 美女扒开尿口让男人操亚洲视频网站| 欧美在线一级视频| 国产精品久久久久久中文字| 久久免费观看视频| 国产精品亚洲视频在线观看| 精品高清一区二区三区| 日韩欧美在线字幕| 不卡伊人av在线播放| 中文字幕av日韩| 日韩电影免费在线观看| 亚洲国产精品国自产拍av秋霞| 久久亚洲影音av资源网| 色婷婷综合久久久久中文字幕1| 欧美激情xxxx性bbbb| 亚洲成人黄色网| 中文字幕亚洲综合久久| 国产精品稀缺呦系列在线| 欧美成人精品在线视频| 国产综合香蕉五月婷在线| 91久久精品国产91性色| 国产精品91久久| 韩剧1988免费观看全集| 亚洲午夜女主播在线直播| 日本久久久久久| 久久久成人精品| 日韩高清有码在线| 欧美性猛交xxxx黑人猛交| 亚洲欧美制服另类日韩| 欧美激情综合色综合啪啪五月| 亚洲欧洲一区二区三区在线观看| 欧美劲爆第一页| 国产日韩欧美中文| 欧美黑人国产人伦爽爽爽| 日韩在线一区二区三区免费视频| 毛片精品免费在线观看| 在线视频日本亚洲性| 亚洲国产欧美一区二区三区同亚洲| 国语自产精品视频在线看一大j8| 国产精品福利在线观看| 久久97久久97精品免视看| 国产成人精品久久亚洲高清不卡| 国产精品黄视频| 亚洲美腿欧美激情另类| 一区二区在线视频| 日本亚洲欧美成人| 国内精品一区二区三区| 狠狠躁天天躁日日躁欧美| 久久久国产精品x99av| 亚洲精品99999| 国产综合久久久久| 亚洲а∨天堂久久精品喷水| 亚洲自拍小视频| 最新国产精品拍自在线播放| 欧美在线视频一区二区| 国产激情视频一区| 亚洲国产精品福利| 国产精品爽爽爽| 在线看片第一页欧美| 欧美夫妻性生活视频| 日韩乱码在线视频| 国产久一一精品| 国产一区香蕉久久| 精品久久久久久久久久久久久| 亚洲一区二区三区xxx视频| 国内精品久久久久久中文字幕| www.精品av.com| 欧美一级视频免费在线观看| 亚洲一二在线观看| 亚洲天堂成人在线| 日韩成人激情在线| 精品中文字幕在线观看| 亚洲a一级视频| 国产精品网站大全| 精品国产自在精品国产浪潮| 日韩国产欧美精品一区二区三区| 亚洲第一黄色网| 国产精品久久久999| 91老司机在线| 欧美亚洲另类制服自拍| 91久久精品美女| 性色av一区二区三区免费| 国产精品久久久久久中文字| 狠狠躁夜夜躁人人爽天天天天97| 欧美影院成年免费版| 久久综合伊人77777蜜臀| 91精品久久久久久久久不口人| 91嫩草在线视频| 国产一区二区三区在线播放免费观看| 亚洲新中文字幕| 成人在线播放av| 国产精品网址在线| 国产成+人+综合+亚洲欧洲| 日韩成人av一区| 韩剧1988免费观看全集| 日韩精品视频在线播放| 青青草原一区二区| 97国产在线观看| 成人a级免费视频| 国产日韩在线精品av| 欧美专区在线播放| 亚洲人成免费电影| 亚洲成人在线视频播放| 欧美二区乱c黑人| 日韩欧美一区视频| 亚洲精品中文字幕av| 性色av一区二区三区| 青青久久av北条麻妃海外网| 91精品国产91久久久久久久久| 国产精品h片在线播放| 日韩视频在线观看免费| 欧美成人精品三级在线观看| www.久久久久久.com| 国产福利视频一区二区| 国产精品久久久久久久久久久新郎| 日韩国产精品亚洲а∨天堂免| 久久精品福利视频| 日韩免费在线免费观看| 亚洲人在线视频| 欧美日韩国产一区二区三区| 亚洲精品美女在线观看| 成人免费在线视频网址| 成人国产在线视频| 成人字幕网zmw| 日韩av在线直播| 久久久久女教师免费一区| 日韩黄色高清视频| 国产欧美va欧美va香蕉在线| 亚洲成人激情小说| 亚洲免费成人av电影| 精品国产一区二区三区久久久狼| 亚洲大胆人体视频| 久久久精品久久| 国产极品jizzhd欧美| 米奇精品一区二区三区在线观看| **欧美日韩vr在线| 亚洲电影免费在线观看| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲级视频在线观看免费1级| 久久久亚洲精品视频| 精品无码久久久久久国产| 亚洲国产成人精品一区二区| …久久精品99久久香蕉国产| 亚洲一区www| 日本亚洲欧美成人| 国产精国产精品| 亚洲电影免费观看高清完整版在线观看| 美女久久久久久久| 日韩激情第一页| 亚洲国产精品高清久久久| 欧美第一黄网免费网站| 中文字幕日韩免费视频|