Javascript中this的用法詳解,javascriptthis

來源:互聯網
上載者:User

Javascript中this的用法詳解,javascriptthis

前些日子面試的時候用到了this,面試官說我的理解有點偏差,回來看了下書和一些部落格,做了點測試,發現自己的理解的確有誤

1.全域變數

應該是最常用的吧,函數中調用一個this,這裡其實就是全域變數

var value="0"; function mei(){  var value="1";  console.log(this.value); //0  console.log(value);   //1 } mei();

輸出0就是因為this指向的是全域

2.建構函式

這是我比較熟悉的用法,建構函式中用this,new一個新的對象後this就指向了這個新的對象

var value="window"; function mei(){  this.value=1;  this.show=function(){   console.log(this.value)  } } var m=new mei(); console.log(m.value);  //1 m.show();        //1

可以看到輸出的是1而並不是window,可見由於建構函式,這裡的this已經指向新的對象了而不是全域變數

3.call和apply

直接借用我的call和apply的部落格中的例子

 var p="456";  function f1(){   this.p="123";  }  function f2() {   console.log(this.p);  }  f2();       //456  f2.call(f1());  //123  f2.apply(f1());  //123

第一行輸出456很好理解,this指向全域,後面的123是因為使用了call或者apply後,f2中的this指向了f1,而f1中的p為123,具體解釋直接戳那篇博文

4.函數作為某個對象的方法調用(我出錯的地方)

當時讓我寫一個對象有幾個方法,我腦子一抽定義了個全域變數,然後在對象的方法裡用this調用,面試官問我這個this是什嗎?我說應該是window,因為這種方式我用的少,以為只有new或者call才會改變this的指向,他就說不對,讓我回去自己看看,現在試了試,我還真是錯了,貼代碼

var value="father"; function mei(){} mei.value="child"; mei.get=function(){console.log(this.value)}; mei.show=function(){console.log(value)}; mei.get();   //child mei.show();  //father

由於get是作為mei的方法調用的,因此這裡的this指向了mei.value所以輸出child

至於father我是這樣理解的,show指向的函數是定義在全域環境下的,由於範圍鏈,在show中沒有找到value,於是就去定義他的環境中找,這就找到了全域的value,如果這裡有理解錯誤的話希望有朋友可以指出來!


javascript中this的用法,此處this指什?

$(":text") 擷取多個匹配input
blur註冊事件時,會枚舉每個input

$(this)枚舉到的input
 
JavaScript指令碼中的this用法詳細詮釋?

this語句用於引用當前對象,並可以引用當前對象相應的屬性。this語句的使用範圍必須局限於函數範圍內惑它的調用函數範圍內。文法位:this[.屬性]
如果未包括屬性參數,則傳遞當前對象。但是為了得到一個結果,建議為語句附上有效屬性。
例如: 簡寫啊
<function abc(name)
{
alert("歡迎"+name);
}
<input type="t1" name="t1" size=20>
<input type="button" value="單擊" onclick="abc(this.form.t1.value)">
如果你在文字框內寫上“123” 這樣就會彈出對話方塊 “歡迎123”。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.