javascriptタイプシステムWindow対象学習ノート

3372 ワード

windowオブジェクトは、Webブラウザのjavascriptの最終的なポケットオブジェクトであり、スコープの中では、最も端に位置し、すべてのオブジェクトを含むオブジェクトです.グローバルスコープで定義されている属性と関数はすべてwindowオブジェクトの属性です.

var myStringVar = 'myString';
var myFunctionVar = function(){};
console.log('myStringVar' in window);//true
console.log('myFunctionVar' in window);//true
 
1、引用
通常はwindowオブジェクトを引用する二つの方法があります.一つ目は簡単に引用してwindowの対象の名称を与えることです.二つ目はグローバルスコープにthisキーワードを使うことです.

var foo ='bar';
windowRef1 = window;
windowRef2 = this;
console.log(windowRef1,windowRef2);//  window     
console.log(windowRef1.foo,windowRef2.foo);//'bar' 'bar' 

2、特性
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()


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にはいくつかの事前定義関数が付いています.windowオブジェクトとして認識される方法です.
1)符号化方法
エンコーディング():全体のURIをエンコードし、無効な文字を特殊なUTF-8で置換します.
エンカウント()の非符号化文字は82文字あります.
!ヽoo.....................................................()*+,-/:=?@~.0-9 a-z A-Z encodeURIComponent():URIのあるセグメントを符号化し(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の割り当てにもエラーが発生します. 
2)、数字の方法
Windowオブジェクトの下には、isfinite()、isNaN()、パーパーパーパーファーストFloat()、パーrseInt()の4つの数字に関する方法があります.
以上が本文の全部です.皆さんの勉強に役に立ちたいです.