Objek tetingkap ialah objek paling bawah ke atas untuk JavaScript dalam penyemak imbas web Ia berada di penghujung skop dan merupakan objek yang mengandungi semua objek. Semua sifat dan fungsi yang ditakrifkan dalam skop global adalah sifat objek tetingkap
var myStringVar = 'myString'; var myFunctionVar = function(){}; console.log('myStringVar' in window);//true console.log('myFunctionVar' in window);//true
1
Biasanya terdapat dua cara untuk merujuk objek tetingkap. Yang pertama ialah merujuk nama yang diberikan kepada objek tetingkap; yang kedua ialah menggunakan kata kunci ini dalam skop global
var foo ='bar'; windowRef1 = window; windowRef2 = this; console.log(windowRef1,windowRef2);//输出window对象的引用 console.log(windowRef1.foo,windowRef2.foo);//'bar' 'bar'
Objek tetingkap adalah tersirat dan biasanya tidak dirujuk secara eksplisit walaupun objek tetingkap diisytiharkan secara eksplisit, ia adalah tersirat kerana objek tetingkap adalah yang terakhir dalam rantai skop
//window.alert()和alert()语句基本上是相同的 var foo = {//window对象在这里是隐式的,window.foo fooMethod: function(){ alert('foo' + 'bar');//window对象在这里是隐式的,window.alert window.alert('foo' + 'bar');//显式调用window对象,效果一样 } } foo.fooMethod();//window对象在这里是隐式的,window.foo.fooMethod()
Objek tetingkap mempunyai sejumlah 18 atribut
undefined NaN Infinity Boolean String Number Object Array Function Date RegExp Error EvalError RangeError ReferenceError SyntaxError TypeError URIError
4 Kaedah
Javascript disertakan dengan beberapa fungsi yang dipratentukan, yang dianggap kaedah objek tetingkap
1), kaedah pengekodan
encodeURI():Enkodkan keseluruhan URI, menggantikan semua aksara yang tidak sah dengan UTF-8 khas Terdapat 82 aksara tidak dikodkan dalam encodeURI():
# $ & ' ( ) * , - ;
encodeURIComponent():Encode bahagian tertentu URI (biasa digunakan untuk menghantar parameter dalam kaedah GET), menggantikan semua aksara tidak sah dengan UTF-8 khas
Secara umumnya, gunakan encodeURIComponent() lebih daripada encodeURI() kerana dalam praktiknya adalah lebih biasa untuk menanyakan parameter rentetan daripada mengekod URI yang mendasari. Terdapat 71 aksara tidak dikodkan dalam encodeURIComponent():
escape():Enkodkan rentetan dan tukar pengekodan unikod aksara kepada jujukan heksadesimal
Penggunaan escape() ditentang dalam ES3, dan disyorkan untuk menggunakan encodeURI dan encodeURIComponent sebaliknya, escape() masih digunakan secara meluas untuk pengekodan kuki, kerana escape() berlaku untuk mengekod aksara haram dalam kuki dan. sering digunakan dalam laluan. Kemunculan "/" tidak dikodkan. Terdapat 69 aksara tidak dikodkan untuk escape():
nyahkodURI():nyahkod pengekodURI()
nyahkodkan encodeURIComponent()
unescape():Decode 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
Kaedah eval() adalah seperti penghurai ECMAScript yang lengkap, hanya menerima satu parameter, rentetan JavaScript yang akan dilaksanakan. Apabila penghurai mendapati bahawa kaedah eval() dipanggil dalam kod, ia akan menghuraikan parameter masuk sebagai pernyataan ECMAScript sebenar, dan kemudian memasukkan hasil pelaksanaan ke kedudukan asal. Keupayaan kaedah eval() untuk mentafsir rentetan adalah sangat berkuasa, tetapi juga sangat berbahaya. Apabila ia digunakan untuk melaksanakan data input pengguna, pengguna berniat jahat boleh memasukkan kod yang mengancam tapak atau aksara aplikasi, yang dipanggil suntikan kod
[Nota] Dalam mod ketat, mana-mana pembolehubah atau fungsi yang dibuat dalam eval() tidak boleh diakses secara luaran, dan memberikan nilai kepada eval juga akan menyebabkan ralat2), kaedah digital
Terdapat empat kaedah digital di bawah objek Window: isFinite(), isNaN(), parseFloat(), dan parseInt()
Di atas adalah keseluruhan kandungan artikel ini, saya harap ia akan membantu kajian semua orang.