javascript類型系統(tǒng) Window對(duì)象學(xué)習(xí)筆記
window對(duì)象是Web瀏覽器中javascript的一個(gè)終極兜底兒對(duì)象,在作用域中處于最末端,是一個(gè)包含所有對(duì)象的對(duì)象。所有在全局作用域中定義的屬性和函數(shù)都是window對(duì)象的屬性
var myStringVar = 'myString'; var myFunctionVar = function(){}; console.log('myStringVar' in window);//true console.log('myFunctionVar' in window);//true
1、引用
通常有兩種引用window對(duì)象的方法。第一種是簡(jiǎn)單引用賦予window對(duì)象的名稱;第二種是在全局作用域中使用this關(guān)鍵字
var foo ='bar'; windowRef1 = window; windowRef2 = this; console.log(windowRef1,windowRef2);//輸出window對(duì)象的引用 console.log(windowRef1.foo,windowRef2.foo);//'bar' 'bar'
2、特性
window對(duì)象是隱式的,通常不顯式引用;即使window對(duì)象顯式聲明,它也是隱式的,因?yàn)閣indow對(duì)象在作用域鏈中是最后一個(gè)
//window.alert()和alert()語句基本上是相同的 var foo = {//window對(duì)象在這里是隱式的,window.foo fooMethod: function(){ alert('foo' + 'bar');//window對(duì)象在這里是隱式的,window.alert window.alert('foo' + 'bar');//顯式調(diào)用window對(duì)象,效果一樣 } } foo.fooMethod();//window對(duì)象在這里是隱式的,window.foo.fooMethod()
3、屬性
window對(duì)象共有18個(gè)屬性
undefined NaN Infinity Boolean String Number Object Array Function Date RegExp Error EvalError RangeError ReferenceError SyntaxError TypeError URIError
[注意]禁止給undefined、NaN和Infinity賦值
4、方法
Javascript附帶一些預(yù)定義函數(shù),被認(rèn)為是window對(duì)象的方法
1)、編碼方法
encodeURI():對(duì)整個(gè)URI進(jìn)行編碼,用特殊的UTF-8替換所有無效的字符
encodeURI()的不編碼字符有82個(gè):
! # $ & ' ( ) * + , - . / : ; = ? @ _ ~ 0-9 a-z A-Z
encodeURIComponent():對(duì)URI的某一段進(jìn)行編碼(常用于GET方法傳遞參數(shù)),用特殊的UTF-8替換所有無效的字符
一般來說,使用encodeURIComponent()比encodeURI()要多,因?yàn)樵趯?shí)踐中更常見的是查詢字符串參數(shù)而不是對(duì)基礎(chǔ)URI編碼。encodeURIComponent()的不編碼字符有71個(gè):
! ' ( ) * - . _ ~ 0-9 a-z A-Z
escape():對(duì)字符串進(jìn)行編碼,將字符的unicode編碼轉(zhuǎn)化為16進(jìn)制序列
ES3中反對(duì)escape()的使用,并建議用encodeURI和encodeURIComponent代替,不過escape()依然被廣泛的用于cookie的編碼,因?yàn)閑scape()恰好編碼了cookie中的非法字符并且對(duì)路徑中常出現(xiàn)的“/”不進(jìn)行編碼。escape()的不編碼字符有69個(gè):
* + - . / @ _ 0-9 a-z A-Z
decodeURI():解碼encodeURI()
decodeURIComponent():解碼encodeURIComponent()
unescape():解碼escape()
var uri = "http://www.wrox.com/illegal value.htm#start"; console.log(encodeURI(uri));//http://www.wrox.com/illegal%20value.htm#start console.log(encodeURIComponent(uri));//http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start console.log(escape(uri));//http%3A//www.wrox.com/illegal%20value.htm%23start var uri = 'http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start'; console.log(decodeURI(uri));//http%3A%2F%2Fwww.wrox.com%2Fillegal value.htm%23start console.log(decodeURIComponent(uri));//http://www.wrox.com/illegal value.htm#start console.log(unescape(uri));//http://www.wrox.com/illegal value.htm#start
eval()
eval()方法像一個(gè)完整的ECMAScript解析器,只接受一個(gè)參數(shù),即要執(zhí)行的JavaScript字符串。當(dāng)解析器發(fā)現(xiàn)代碼中調(diào)用eval()方法時(shí),它會(huì)將傳入的參數(shù)當(dāng)作實(shí)際的ECMAScript語句來解析,然后把執(zhí)行結(jié)果插入到原位置。eval()方法能夠解釋字符串的能力非常強(qiáng)大,但也非常危險(xiǎn)。當(dāng)用它執(zhí)行用戶輸入數(shù)據(jù)時(shí),可能會(huì)有惡意用戶輸入威脅站點(diǎn)或應(yīng)用程序字符的代碼,就是所謂的代碼注入
[注意]在嚴(yán)格模式下,外部訪問不到eval()中創(chuàng)建的任何變量或函數(shù),為eval賦值也會(huì)導(dǎo)致錯(cuò)誤
2)、數(shù)字方法
Window對(duì)象下還有isFinite()、isNaN()、parseFloat()、parseInt()這四個(gè)關(guān)于數(shù)字的方法
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
- JS window對(duì)象的top、parent、opener含義介紹
- js window對(duì)象屬性和方法相關(guān)資料整理
- javascript window對(duì)象屬性整理
- JavaScript中Window對(duì)象的屬性及事件
- JavaScript的document對(duì)象和window對(duì)象詳解
- JS 使用 window對(duì)象的print方法實(shí)現(xiàn)分頁打印功能
- JavaScript瀏覽器對(duì)象之一Window對(duì)象詳解
- Javascript window對(duì)象詳解
- Javascript之BOM(window對(duì)象)詳解
- javascript入門之window對(duì)象【新手必看】
- JS window對(duì)象簡(jiǎn)單操作完整示例
相關(guān)文章
原生js實(shí)現(xiàn)新聞列表展開/收起全文功能
本文主要介紹了原生js實(shí)現(xiàn)新聞列表展開/收起全文功能的知識(shí)要點(diǎn)、注意事項(xiàng)以及完整代碼。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01JavaScript雙向鏈表實(shí)現(xiàn)LRU緩存算法的示例代碼
本文主要介紹了JavaScript雙向鏈表實(shí)現(xiàn)LRU緩存算法的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01利用Javascript實(shí)現(xiàn)BMI計(jì)算器
BMI指數(shù)計(jì)算器相信大家都用過,那用JavaScript怎么實(shí)現(xiàn)呢?其實(shí)很簡(jiǎn)單,這篇文章給出了實(shí)例代碼,有需要的可以參考學(xué)習(xí)。2016-08-08JavaScript中防止微信瀏覽器被整體拖動(dòng)的方法
這篇文章主要介紹了JavaScript中防止微信瀏覽器被整體拖動(dòng)的方法,需要的朋友可以參考下2017-08-08如何在CocosCreator里畫個(gè)炫酷的雷達(dá)圖
這篇文章主要介紹了如何在CocosCreator里畫個(gè)炫酷的雷達(dá)圖,對(duì)Graphics感興趣的同學(xué),一定要看看,并且把代碼實(shí)踐一下2021-04-04詳釋JavaScript執(zhí)行環(huán)境與執(zhí)行棧
一句話就可以概括:代碼 ( 包括函數(shù) ) 執(zhí)行時(shí)所需要的所有信息就是執(zhí)行環(huán)境。由于 ES 歷經(jīng)多個(gè)版本,所以執(zhí)行環(huán)境的標(biāo)準(zhǔn)也一直在變。文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04JavaScript實(shí)現(xiàn)鼠標(biāo)經(jīng)過表格行給出顏色標(biāo)識(shí)
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)鼠標(biāo)經(jīng)過表格行給出顏色標(biāo)識(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04