これは、オブジェクト指向の言語の重要なキーワードであり、このキーワードの使用を習得します。 JavaScriptのこれは、JavaやC#などの客観的指向の言語とは異なり、これにより、これがより混乱し、混乱を招きます。
これが使用すること:
1。純粋な関数
2。オブジェクトメソッド呼び出し
3.新しいを使用してコンストラクターを呼び出します
4。内部関数
5.呼び出し /適用を使用します
6。イベントバインディング
1。純粋な関数
次のようにコードコードをコピーします。
var name = 'これはウィンドウ'です
関数getName(){
console.log(this);
console.log(this.name); // console出力:
}
getName();
実行結果の分析:純粋な関数でのこれは、グローバルオブジェクト、ウィンドウを指します。
2。オブジェクトメソッド呼び出し
次のようにコードコードをコピーします。
var name = 'これはウィンドウです';
var testobj = {
名前:「これはtestobjです」、
getName:function(){
console.log(this); // console output:testobj //
console.log(this.name); // console出力:これはtestobjです
}
}
testobj.getName();
結果分析を実行:これは、メソッドを呼び出すオブジェクトを指しています。
3.新しいを使用してコンストラクターを呼び出します
次のようにコードコードをコピーします。
function getobj(){
console.log(this); // console出力:getobj {} //
}
new getobj();
結果分析を実行:これは、新しいコンストラクターで、新しく生成されたオブジェクトを指します。
4。内部関数
次のようにコードコードをコピーします。
var name = "これはウィンドウです";
var testobj = {
名前:「これはtestobjです」、
getName:function(){
// var seelf = this; //このオブジェクトを一時的に保存します
var ahandle = function(){{)
console.log(this);
console.log(this.name); //コンソール出力:これはウィンドウです
//console.log(set);
}
ハンドル ();
}
}
testobj.getName();
結果分析を実行:内部関数では、グローバルオブジェクト、ウィンドウを指します。一般に、JavaScript言語の設計エラーであると考えられています。これは、内部関数でこれをグローバルオブジェクトに向けたくないためです。一般的な処理方法は、これを変数として保存することであり、上記のコードに示すように、一般的にそのまたは自己であることが合意されています。
5.呼び出し /適用を使用します
次のようにコードコードをコピーします。
var name = 'これはウィンドウです';
var testobj1 = {
名前: 'これはtestobj1'です。
getName:function(){
console.log(this); // console出力:testobj2 // testobj2オブジェクト
console.log(this.name); //コンソール出力:これはtestobj2です
}
}
var testobj2 = {
名前: 'これはtestobj2です'
}
testobj1.getname.apply(testobj2);
testobj1.getname.call(testobj2);
注:適用と呼び出しは似ていますが、2つの2番目のパラメーターは異なります。
[1] call(thisarg [、arg1、arg2、...]);
[2] apply(thisarg [、argarray]);
実行結果の分析:これを呼び出し /適用関数で使用して、バインディングオブジェクトを指します。
6。イベントバインディング
イベントメソッドのこの方法は、最も疑わしい場所である必要があり、ほとんどのエラーはこれに由来します。
次のようにコードコードをコピーします。
//要素のバインディングのページ
<script type = "text/javascript">
関数btclick(){
console.log(this);
}
</script>
<body>
<ボタンid = "btn" onclick = "btclick();"> </button>をクリックします
</body>
次のようにコードコードをコピーします。
// JSバインディング方法(1)
<body>
<ボタンID = "btn"> </button>をクリックします
</body>
<script type = "text/javascript">
関数btclick(){
console.log(this); // console出力:<ボタンID = </button> //
}
document.getElementByID( "BTN")。
document.getElementByID( "BTN")。
</script>
次のようにコードコードをコピーします。
// JSバインディング方法(2)
<body>
<ボタンID = "btn"> </button>をクリックします
</body>
<script type = "text/javascript">
document.getElementById( "btn")= function(){
console.log(this); // console出力:<ボタンID = </button> //
}
document.getElementByID( "BTN")。
</script>
次のようにコードコードをコピーします。
// JSバインディング方法(3)
<body>
<ボタンID = "btn"> </button>をクリックします
</body>
<script type = "text/javascript">
関数btclick(){
console.log(this);
}
document.getElementByID( "BTN")AddEventListener( 'Click'、btclick);メソッド(メソッドメソッド(メソッド)イベント処理で使用する場合。
document.getElementById( "BTN")。
</script>
ランニング結果の分析:上記の2つの一般的なイベント結合方法、バインディングイベント方法に加えて、ページ要素のイベントバインディングは、バインディングイベントのElment要素を指します。