これはJavaScriptのキーワードです。この値は、関数の使用に応じて変化します。しかし、常に原則があります。つまり、これは関数を呼び出すオブジェクトを指します。
従来のOO言語では、このポインターはクラスで宣言され、オブジェクト自体を表します。 JavaScriptでは、これは現在のコンテキスト、つまり発信者の参照を表します。
*******これは常に(関数オブジェクト)の所有者を指します
これとグローバルオブジェクト:
var a = 1; function foo(){var b = 2; console.log(this.a+b); // 3} foo(); // FOO関数の所有者はウィンドウであり、これはグローバル関数のウィンドウオブジェクトを指します(************新しい、呼び出し、適用メソッドが使用されて、これの参照関係を変更するために)これとオブジェクト:
var person = {name: 'theo wong'、gender: 'male'、getname:function(){console.log(this.name); // getname functionの所有者は個人のオブジェクトです}}; person.getName();これはネストされた関数で
var myobject = {func1:function(){console.log(this); // myobject var func2 = function(){console.log(this); //ウィンドウvar func3 = function(){console.log(this); // window}(); }(); }}; myobject.func1(); //ネストされた関数では、ネストされた関数の実行コンテキストはウィンドウであるため、これはウィンドウオブジェクトを指します。実際、これはECMA-262-3のバグであり、最新のECMA-262-5で修正されていますこれはイベント処理で:
var showvalue = function(){alert(this.value); };1. <入力id = "test" type = "text" />
dom.onclick、document.getElementbyid( 'test')を介したバインディングイベント。onclick = showValue;
この時点で、showValueはdomのonclickメソッドと呼ばれるため、これはウィンドウオブジェクトではなく、DOMオブジェクトを参照する必要があります。
2。htmlタグに書き込み、<入力id = "test" type = "text" onclick = "showvalue();" />
DOMをクリックすると、これを正しいことはできません。この時点では、ウィンドウオブジェクトを指します。ウィンドウオブジェクトに定義された値がないため、this.valueは取得できません。
***現時点では、domオブジェクトのオンクリックにshowValue関数を割り当てるのではなく、参照です。この時点で、関数()関数の所有者はウィンドウです
document.getElementById( 'test')。onclick = function(){showvalue();}AddEventListener/AttachEventを介したバインディングイベントリスニング
<input type = "text" id = "test" /> <script type = "text /javascript"> var dom = document.getElementById( 'test'); id = 'window'; function test(){alert(this.id); } dom.addeventlistener?dom.addeventlistener( 'click'、test、false):dom.attachevent( 'onclick'、test); // AddEventListener Test // AttachEventウィンドウ</script> //このバインディングイベント監視の方法、AttachEventこれはウィンドウオブジェクトであり、AddEventListenerはDOMオブジェクトですこれと構成:
function obj(name、age){this.name = name; this.age = age; this.fun = function(){alert(this.name); }; } var obj = new obj( 'xht'、18); //これはこの新しいオブジェクトを指し、このobj.fun(); // xhtの参照関係を新しい変更これと電話
//ジャックvarジャック= {name: "jack"、age:26}という名前の人を定義します// abruzzi var abruzzi = {name: "abruzzi"、age:26} // define define defien } //アラート名のコンテキストをジャックに設定すると、この時点でこれはジャックアラート(alertname.call(jack))です。 // alertnameのコンテキストをAbruzziに設定すると、この時点でAbruzzi alert(alertname.call(abruzzi))があります。引用は比較的興味深いトピックです。他の言語とは異なり、JavaScriptの参照は常に参照自体ではなく、最終オブジェクトを常に指しています。
var obj = {}; //空のオブジェクトvar ref = obj; //参照obj.name = "Objecta";アラート(参照名); // ref次に、名前属性を追加しますobj = ["one"、 "2"、 "3"]; // objは別のオブジェクト(配列オブジェクト)alert(ref.name)を指します。 // refは、元のオブジェクトアラート(obj.length)も指しています。 // 3アラート(ref.length);OBJは匿名オブジェクトへの参照にすぎないため、REFはそれを指しません。
参照は、特定のオブジェクトを指すことのみができます。特定のオブジェクトが変更されると、変更されたオブジェクトではなく、元のオブジェクトへの参照または参照。
上記は、編集者によって紹介されたJavaScriptのこのポインターと参照に関する情報です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!