javascript類型系統(tǒng) Window對象學(xué)習(xí)筆記
window對象是Web瀏覽器中javascript的一個終極兜底兒對象,在作用域中處于最末端,是一個包含所有對象的對象。所有在全局作用域中定義的屬性和函數(shù)都是window對象的屬性
var myStringVar = 'myString';
var myFunctionVar = function(){};
console.log('myStringVar' in window);//true
console.log('myFunctionVar' in window);//true
1、引用
通常有兩種引用window對象的方法。第一種是簡單引用賦予window對象的名稱;第二種是在全局作用域中使用this關(guān)鍵字
var foo ='bar'; windowRef1 = window; windowRef2 = this; console.log(windowRef1,windowRef2);//輸出window對象的引用 console.log(windowRef1.foo,windowRef2.foo);//'bar' 'bar'
2、特性
window對象是隱式的,通常不顯式引用;即使window對象顯式聲明,它也是隱式的,因為window對象在作用域鏈中是最后一個
//window.alert()和alert()語句基本上是相同的
var foo = {//window對象在這里是隱式的,window.foo
fooMethod: function(){
alert('foo' + 'bar');//window對象在這里是隱式的,window.alert
window.alert('foo' + 'bar');//顯式調(diào)用window對象,效果一樣
}
}
foo.fooMethod();//window對象在這里是隱式的,window.foo.fooMethod()
3、屬性
window對象共有18個屬性
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ù),被認為是window對象的方法
1)、編碼方法
encodeURI():對整個URI進行編碼,用特殊的UTF-8替換所有無效的字符
encodeURI()的不編碼字符有82個:
! # $ & ' ( ) * + , - . / : ; = ? @ _ ~ 0-9 a-z A-Z
encodeURIComponent():對URI的某一段進行編碼(常用于GET方法傳遞參數(shù)),用特殊的UTF-8替換所有無效的字符
一般來說,使用encodeURIComponent()比encodeURI()要多,因為在實踐中更常見的是查詢字符串參數(shù)而不是對基礎(chǔ)URI編碼。encodeURIComponent()的不編碼字符有71個:
! ' ( ) * - . _ ~ 0-9 a-z A-Z
escape():對字符串進行編碼,將字符的unicode編碼轉(zhuǎn)化為16進制序列
ES3中反對escape()的使用,并建議用encodeURI和encodeURIComponent代替,不過escape()依然被廣泛的用于cookie的編碼,因為escape()恰好編碼了cookie中的非法字符并且對路徑中常出現(xiàn)的“/”不進行編碼。escape()的不編碼字符有69個:
* + - . / @ _ 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()方法像一個完整的ECMAScript解析器,只接受一個參數(shù),即要執(zhí)行的JavaScript字符串。當(dāng)解析器發(fā)現(xiàn)代碼中調(diào)用eval()方法時,它會將傳入的參數(shù)當(dāng)作實際的ECMAScript語句來解析,然后把執(zhí)行結(jié)果插入到原位置。eval()方法能夠解釋字符串的能力非常強大,但也非常危險。當(dāng)用它執(zhí)行用戶輸入數(shù)據(jù)時,可能會有惡意用戶輸入威脅站點或應(yīng)用程序字符的代碼,就是所謂的代碼注入
[注意]在嚴(yán)格模式下,外部訪問不到eval()中創(chuàng)建的任何變量或函數(shù),為eval賦值也會導(dǎo)致錯誤
2)、數(shù)字方法
Window對象下還有isFinite()、isNaN()、parseFloat()、parseInt()這四個關(guān)于數(shù)字的方法
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
關(guān)于ECharts設(shè)置x軸刻度間隔的兩種方式
這篇文章主要介紹了關(guān)于ECharts設(shè)置x軸刻度間隔的兩種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
js合并數(shù)組對象代碼實現(xiàn)(將數(shù)組中具有相同屬性對象合并到一起組成一個新數(shù)組)
項目過程中經(jīng)常會遇到JS數(shù)組合并的情況,時常為這個糾結(jié),這篇文章主要給大家介紹了關(guān)于js合并數(shù)組對象(將數(shù)組中具有相同屬性對象合并到一起組成一個新數(shù)組)的相關(guān)資料,需要的朋友可以參考下2024-01-01
JavaScript實現(xiàn)iframe自動高度調(diào)整和不同主域名跨域
這篇文章主要介紹了JavaScript實現(xiàn)iframe自動高度調(diào)整和不同主域名跨域,作者通過建立一個代理來同步高度調(diào)整,需要的朋友可以參考下2016-02-02
javascript 表格排序和表頭浮動效果(擴展SortTable)
前段時間一個項目有大量頁面用到表格排序和表頭浮動的效果,在網(wǎng)上找了幾個表格排序的js代碼,最后選擇了 Stuart Langridge的SortTable,在SortTable基礎(chǔ)上做了些擴展,加上了表頭浮動效果及一些小功能。2009-04-04

