JS中精選this關鍵字的指向規律你記住了嗎

来源:http://www.cnblogs.com/waj6511988/archive/2017/05/13/6848213.html
-Advertisement-
Play Games

1.首先要明確: 誰最終調用函數,this指向誰 this指向的永遠只可能是對象!!!!! this指向誰永遠不取決於this寫在哪,而取決於函數在哪裡調用! this指向的對象,我們稱之為函數的上下文context,也叫做函數的調用者是誰! 2.this指向的規律(與函數調用的方式息息相關) th ...


  1.首先要明確:           誰最終調用函數,this指向誰           this指向的永遠只可能是對象!!!!!          this指向誰永遠不取決於this寫在哪,而取決於函數在哪裡調用!          this指向的對象,我們稱之為函數的上下文context,也叫做函數的調用者是誰!   2.this指向的規律(與函數調用的方式息息相關)   this指向的情況取決於函數調用的方式有哪些(總結如下):       2.1.通過函數名()直接調用--this 指向window;                     
         function func(){
            console.log(this);
             }
  func();

      2.2.通過對象.函數名()調用的--this指向這個對象

                狹義對象: this指向--obj    

                  var obj={
                         name:"obj",
                         func1:func
                         };
                   obj.func1();

 

                 廣義對象: this指向--div

 document.getElementById("div").onclick=function(){
      this.style.backgroundColor="red";
      }

    2.3. this指向——數組arr

var arr=[func,1,2,3];
     arr[0]();

    2.4.函數作為window內置函數的回調函數調用,this指向window setInterval,setTimout等

setInterval(func,1000);         
   setTimeout(func,1000)
   2.5.函數作為構造函數,用new關鍵字調用時:this指向新定義的對象obj     var obj=new func();

  2.6.  通過call、apply、bind調用,this指向我們規定的對象。

  Func.call(obj,參數一,參數2,參數3.。。。)

  Func.allply(obj,[ 參數一,參數2,參數3.。。。])

   Func.bind(obj)( 參數一,參數2,參數3)   var f = func.bind(obj).   f(…….);

    小試牛刀:
var fullname = 'John Doe';
        var obj = {
           fullname: 'Colin Ihrig',
           prop: {
              fullname: 'Aurelio De Rosa',
              getFullname: function() {
                 return this.fullname;
              }
           }
        };
        console.log(obj.prop.getFullname()); // Aurelio De Rosa
        //函數最終調用者:obj.prop  this--->obj.prop
         
        var test = obj.prop.getFullname;
         
        console.log(test());  // John Doe
        // 函數最終調用者: 函數() window  this-->window

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Sass 擴展了 CSS3,增加了規則、變數、混入、選擇器、繼承等等特性。Sass 生成良好格式化的 CSS 代碼,易於組織和維護。 SASS是對CSS3(層疊樣式表)的語法的一種擴充,它可以使用巢狀、混入、選擇子繼承等功能,可以更有效有彈性的寫出Stylesheet。Sass最後還是會編譯出合法的 ...
  • jQuery css操作 1)css 2)位置 3)尺寸 1.css操作之css css(name|pro|[,val|fn]) 當你使用CSS屬性在css()或animate()中,我們將根據瀏覽器自動加上首碼(在適當的時候),在Chrome/Safari瀏覽器中我們將設置為" webkit us ...
  • 用bootstrap做了用戶電話號碼查詢的前端頁面。 並且用了MVCPager分頁。 Bootstrap前端頁如下: 一開始使用了用A標簽,分頁成功後,我進入第二頁,點擊這個A標簽,頁面會自動跳轉到第一頁。相當無解。。想不通。經過和群里高手交流說可能是A標簽的問題。。我換成button,問題解決。 ...
  • 1.對話框,輸出框,警告框 1. document.write() 可用於直接向 HTML 輸出流寫內容。簡單的說就是直接在網頁中輸出內容。 2.alert(字元串或變數); 3.confirm 消息對話框通常用於允許用戶做選擇的動作,如:“你對嗎?”等。彈出對話框(包括一個確定按鈕和一個取消按鈕) ...
  • 1.<q>標簽,短文本引用 <q>引用文本</q> <q>標簽的真正關鍵點不是它的預設樣式雙引號(如果這樣我們不如自己在鍵盤上輸入雙引號就行了),而是它的語義:引用別人的話。 2.使用<span>標簽為文字設置單獨樣式 <span>標簽是沒有語義的,它的作用就是為了設置單獨的樣式用的。 語法:<sp ...
  • 代碼: new Ext.form.ComboBox({ store: new Ext.data.JsonStore({ idProperty: 'VehicleNo', url: '../ajax/test.ashx, fields: ['VehicleNo', 'phoneNum'] }), id ...
  • 六、文字排版--刪除線 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 5 <title>刪除樣式</title> 6 <style ...
  • ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...