前端-JS-this

this的含義:代表的是執行當前代碼的對象。

先從我最開始認識this說起:

<input  id='btn' type='submit' value='確認' />

JS代碼:

var btn = document.getElementById('btn');

btn.οnclick=function(){

alert(this.value);

}

運行,顯示爲:確認

老師在講面向對象時講到this,直接把我繞暈了,我查了查資料並實驗了下,總結如下:

this指向的是一個   對象          

1.純粹的函數,非對象的方法:默認爲指向window

var x=1;

function a(){
a
lert(this.x);
}
a();
這裏,我們定義了一個全局變量x並賦值爲1,在純函數中 alert 出來this,結果顯示爲: 1

默認情況下,this指向的是window,是全局Global,我們在執行函數a時,實際上是window.a();所以this現在指向的是全局

而我們在全局中定義了一個x,所以alert(this.x)結果是x的值。

爲了證明,我們修改一下代碼:

function a(){
this.x = 2;
}
a();
alert(x);

結果顯示爲2,說明我們執行函數a時,使用this定義了一個全局變量x,並賦值爲2;

在這裏列出一個特殊情況,在標籤內部調用函數

<input  id='btn' type='submit'οnclick='dosomething()' value='確認' />

在這裏,這個標籤點擊時調用的函數,其this指向仍然爲window全局

而:<input  id='btn' type='submit'οnclick='dosomething(this)' value='確認' />

這裏,因爲調用函數時將this傳入調用函數中,這個this指向的該標籤

2.對象內的函數(對象內的方法),指向調用該函數的對象

var objA = new Object();//新建一個對象a
objA.someValue = 1;
objA.fnTest = function(){
alert('valueA:'+this.someValue);
}
var objB = new Object();//新建一個對象b
objB.someValue = 2;
objB.fnTest = function(){
alert('valueB:'+this.someValue);
}
objA.fnTest();
objB.fnTest();

分別顯示valueA:1  valueB:2

3.在構造函數內調用,this指向新創建的的對象

function test(){ 
    this.x = 1; 
 
  var o = new test();
alert(o.x);  

顯示:1。

4.使用其他方法綁定this指向

   發






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章