ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 厳密モードでのこの指摘の問題の詳細な説明

JavaScript 厳密モードでのこの指摘の問題の詳細な説明

巴扎黑
巴扎黑オリジナル
2018-05-29 13:43:411789ブラウズ

通常の実行モードに加えて、ECMAscript 5 では 2 番目の実行モード「strict モード」が追加されています。以下の記事では、JavaScript 厳密モードに関する関連情報を中心に紹介していますので、必要な方は参考にしてみてください。

はじめに

JavaScript を学習したり使用したりするときに、多くの人がこれに混乱したことがあると思います。そのため、この記事では、厳密モードでのこれについてのいくつかの方向性をまとめます。

1. グローバル スコープの this

厳密モードでは、グローバル スコープで、これはウィンドウ オブジェクトを指します

 "use strict";
 
 console.log("严格模式");
 console.log("在全局作用域中的this");
 console.log("this.document === document",this.document === document);
 console.log("this === window",this === window);
 this.a = 9804;
 console.log('this.a === window.a===',window.a);


2. グローバル スコープの関数の this this

厳密モードでは、この関数の this は未定義

 "use strict";
 
 console.log("严格模式");
 console.log('在全局作用域中函数中的this');
 function f1(){
 console.log(this);
 }
 
 function f2(){
 function f3(){
 console.log(this);
 }
 f3();
 }
 f1();
 f2();


3. オブジェクトの関数 (メソッド) の This

厳密モードでは、オブジェクト関数内の this は、呼び出し関数のオブジェクト インスタンスを指します

 "use strict";
 
 console.log("严格模式");
 console.log("在对象的函数中的this");
 var o = new Object();
 o.a = 'o.a';
 o.f5 = function(){
 return this.a;
 }
 console.log(o.f5());


4. コンストラクター内の This

strict モードでは、コンストラクター内の this は、コンストラクターによって作成されたオブジェクト インスタンスを指します。

 "use strict";
 
 console.log("严格模式");
 console.log("构造函数中的this");
 function constru(){
 this.a = 'constru.a';
 this.f2 = function(){
 console.log(this.b);
 return this.a;
 }
 }
 var o2 = new constru();
 o2.b = 'o2.b';
 console.log(o2.f2());


5. イベント処理関数の this

strict モードでは、イベント処理関数で、this はイベントをトリガーしたターゲット オブジェクトを指します。

 "use strict";
 
 function blue_it(e){
 if(this === e.target){
 this.style.backgroundColor = "#00f";
 }
 }
 var elements = document.getElementsByTagName('*');
 for(var i=0 ; i<elements.length ; i++){
 elements[i].onclick = blue_it;
 }
 
 //这段代码的作用是使被单击的元素背景色变为蓝色

6. インラインイベント処理関数のこれ

厳密モードでは、インラインイベント処理関数には、次の 2 つの状況があります:

 <button onclick="alert((function(){&#39;use strict&#39;; return this})());">
 内联事件处理1
 </button>
 <!-- 警告窗口中的字符为undefined -->
 
 <button onclick="&#39;use strict&#39;; alert(this.tagName.toLowerCase());">
 内联事件处理2
 </button>
 <!-- 警告窗口中的字符为button -->

以上がJavaScript 厳密モードでのこの指摘の問題の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。