javascriptタイプシステムのWindow

4070 ワード

目次[1]参照[2]特性[3]属性[4]メソッド符号化方法eval()デジタル方法
前の話
windowオブジェクトは、Webブラウザのjavascriptの最終的なポケットオブジェクトであり、スコープの中では、最も端に位置し、すべてのオブジェクトを含むオブジェクトです.グローバルスコープで定義されている属性と関数はすべてwindowオブジェクトの属性です.
var myStringVar = 'myString';
var myFunctionVar = function(){};
console.log('myStringVar' in window);//true
console.log('myFunctionVar' in window);//true
 
参照
通常はwindowオブジェクトを引用する二つの方法があります.一つ目は簡単に引用してwindowの対象の名称を与えることです.二つ目はグローバルスコープにthisキーワードを使うことです.
var foo ='bar';
windowRef1 = window;
windowRef2 = this;
console.log(windowRef1,windowRef2);//  window     
console.log(windowRef1.foo,windowRef2.foo);//'bar' 'bar'
 
特性
windowオブジェクトは暗黙的で、通常は明示的に引用されません.たとえwindowオブジェクトが明示的に声明しても、それは陰的なものです.
//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()
 
属性
windowオブジェクトは全部で18の属性があります.
undefined NaN Infinity  
Boolean String Number Object Array Function Date RegExp 
Error EvalError RangeError ReferenceError SyntaxError TypeError URIError    
[注意]undefined、NaN、Infinityへの割当は禁止されています.
 
方法
Javascriptにはいくつかの事前定義関数が付いています.windowオブジェクトとして認識される方法です.
コーディング方法
エンコーディング():全体のURIをエンコードし、無効な文字を特殊なUTF-8で置換します.
エンカウント()の非符号化文字は82文字あります.
! # $ & ' ( ) * + , - . / : ; = ? @ _ ~ 0-9 a-z A-Z
エンコーディング(GETメソッドのパラメータ伝達によく使われる)は、無効な文字を特殊なUTF-8で置換します.
一般的には、エンコーディングではなく、エンコーディングを使用するほうがエンコーディングよりも多くなります.エンカウントのエンコードされていない文字は71文字あります.
!  ' ( ) * - . _ ~ 0-9 a-z A-Z
escape():文字列をエンコードし、文字のunicodeコードを16進シーケンスに変換します.
ES 3ではescapeの使用に反対し、encodeURIとencodeURIComponentで代替することを提案していますが、escape()は依然としてcookieの符号化に広く使われています.escape()の非符号化文字は69文字あります.
* + - . / @ _ 0-9 a-z A-Z
decodeURI():デコードencodeURI()
デコード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解析器のように、一つのパラメータ、すなわち実行するJavaScript文字列しか受け入れられません.解析器がコード内でeval()メソッドを呼び出すと、入力されたパラメータを実際のECMAScript文として解析し、実行結果を元の位置に挿入します.eval()メソッドは文字列を説明する能力が非常に強いが、非常に危険である.これを使ってユーザーがデータを入力すると、サイトやアプリケーションの文字を脅かすコードを悪意のあるユーザーが入力する可能性があります.いわゆるコード注入です.
[注意]厳格なモードでは、外部からeval()で作成された変数や関数にアクセスできないため、evalの割り当てにもエラーが発生します.
 
デジタル・メソッド
Windowオブジェクトの下には、isfinite()、isNaN()、パーパーパーパーファーストFloat()、パーrseInt()の4つの数字に関する方法があります.
それらの詳細についてはここに移動します.