前端開發HTML5——函數

来源:https://www.cnblogs.com/aitiknowledge/archive/2019/09/17/11534526.html
-Advertisement-
Play Games

20、函數的調用方式(內容尚未完全,可自行百度這方面的知識) call()、apply()、bind() 這三個方法的作用都是改變執行環境中的this指針的指向 call()與apply() 這兩個方法的第一個參數都為this指針指向的目標對象,他們的區別是第二個參數開始傳參的方式不同 call傳參 ...


20、函數的調用方式(內容尚未完全,可自行百度這方面的知識) call()、apply()、bind() 這三個方法的作用都是改變執行環境中的this指針的指向   call()與apply() 這兩個方法的第一個參數都為this指針指向的目標對象,他們的區別是第二個參數開始傳參的方式不同 call傳參:obj, arg2,arg3,..... apply傳參:obj, [arg2,arg3,..... ] function func(a, b){           return this.value + a + b; }           var obj = {                     value: 1,           };           func.call(obj, 2, 3);   //6           func.apply(obj, 2, 3);//6                      //call()和apply()如果第一個參數不是對象類型,那麼這個參數會被自動轉化為對象類型           function func(){                console.log(Object.prototype.toString.call(this));           }           func.call(2);   bind() 第一個參數為this指針指向的目標對象,bind方法執行後返回的是一個新函數 function func(){   console.log(this.name); } var obj = {   name: '張三', }; var f = func.bind(obj); f();  //張三 //在這個新的函數對象中,this被永久的綁定到了bind的第一個參數上面,五六年後期這個函數被如何使用,this都不會改變 var obj27 = {   name: '李四',   f: f, }; obj2.f();  //張三   call()、apply()、bind() 如果這三個方法都沒有提供第一個參數或者是參數是this、null、undefined中的一種,那麼都將預設第一個參數的為Global對象     21、全局變數和局部變數 在函數內部聲明的變數為局部變數,函數外部不能使用; 函數外部聲明的變數為當前js文件的全局變數 如果沒有var修飾的變數也為全局變數,這個變數在哪都可以訪問 var a = 1; function test(){ console.log(a);        //1 var b = 2; console.log(b);       //2 }  test(); console.log(a);       //1 console.log(b);       // b is not defined   當函數內部的變數和全局變數同名,函數內部就不會使用外部的變數 var g = 100; function testG(){ console.log(g);          //undefined var g = 200; console.log(g);         //200 } testG(); console.log(g);         //100   22、函數的屬性和方法 1)length:表示函數希望接受的命名參數的個數  function test(a, b){   return 'hello'; } console.log(test.length);     //2   ---->形參的個數 test(); console.log(test());      //hello   2)函數作為參數  function handle(fun){   var msg = "hello";   fun(msg); } handle(function(m){   console.log(m);           //hello });   3)函數作為返回值  function handle2(){   return function(){     console.log(123);   } } handle2();    //這返回的只是一個函數名 handle2()();            //123   23、值傳遞和引用傳遞 1)基本數據類型的傳遞就是值傳遞    不會影響上一個變數的值 var a = 1; var b = a; console.log(a, b);    //1 1 b = 3; console.log(a, b);     //1 3   2)引用數據類型的傳遞就是址傳遞    兩個變數的值會變成一模一樣 var obj = { name: 'zhangsan', age:12, }; var obj2 = obj; console.log(obj, obj2);     // {name:'zhangsan',age:12,} {name:'zhangsan',age:12,} obj2.gender = 'male'; console.log(obj, obj2);     //{name:'zhangsan',age:12, gender:'male',} {name:'zhangsan',age:12,gender:'male', }   24、閉包(函數訪問上下文中的變數) var arr = []; for(var i = 0; i < 5; i++){   arr[i] = function(){     console.log(i);   } } arr[0]();     //5 arr[1]();     //5 arr[2]();     //5 arr[3]();     //5 arr[4]();     //5 上述現象就是閉包現象 解決方法將上面的arr[i]改為下麵的arr[i] arr[i] = (function(num){   return function(){           console.log(num);   }; })(i); 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Android開發中有非常強大的 Retrofit 請求,結合RxJava可以非常方便實現 RESTful API 網路請求。在 iOS開發中也有非常強大的網路請求庫 "Moya" ,Moya是一個基於 Alamofire 開發的,輕量級的Swift網路層。Moya的可擴展性非常強,可以方便和RX ...
  • 版權聲明:本文為xing_star原創文章,轉載請註明出處! 本文同步自http://javaexception.com/archives/214 Android微信九宮格圖片展示控制項 半年前,公司產品的帖子流這塊進行大改版,像素級的複製微信朋友圈的效果,發現微信的圖片展示9宮格有些不好處理,經過幾 ...
  • 解決:target overrides the `GCC_PREPROCESSOR_DEFINITIONS` ...
  • 距離上一次寫 基礎篇有了4個月,終於我寫了一個 功能完善的即時通訊app,作為高級篇的擔當出現。廢話不多說,上圖 app預覽 ​​​​ ​​​​ ​​ 實現功能 1.用戶的登錄註冊 2.單聊,能清空聊天記錄,且對於單人可以進行.語音通話,(這個部分我做的比官方demo要好得多,可以全局監聽,但是沒做 ...
  • 1.在ps中打開,依次打開圖像》圖像大小,記錄此時精靈圖大小; 將這個精靈背景圖等比例縮放到原來寬高的一半,記錄此時縮放後的精靈圖大小。 2.此時頁面應顯示的是縮放後的圖片,打開f8找到它的坐標,將縮放後的xy坐標作為背景定位坐標 3.bg-size的寬度是縮放後的寬度。 這樣,就完成了精靈二倍縮放 ...
  • 在使用element的上傳組件時在一下幾個鉤子中傳遞其他參數 圖中是文件上傳時的幾個鉤子,參數為文件或文件列表或者其他參數,但是現在我想在原有參數上傳遞其他參數。比如我想在on-success的鉤子中傳遞一個自定義參數i,原本是這樣寫的: 但是發現這樣寫取不到自身原來的參數,後來在網上找到了一個比較 ...
  • 1.給整個頁面添加ESC事件: $(document).keyup(function(event){ switch(event.keyCode) { case 27: alert("ESC"); case 96: alert("ESC"); } }); 2.給指定元素添加ESC事件: 當按下一個鍵盤 ...
  • 使用ESLint前:eslint是幹嘛的,我這樣寫有什麼問題,怎麼還報錯了,太麻煩想去掉這個插件,腳手架中關於eslint文件里的配置是什麼意思?怎麼設置配置項和規則達到自己想要的檢測效果呢?怎麼集成到VSCODE實現自動修複呢? 所以本片博文介紹ESLint是什麼,配置項的意思,啟用elsint推 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...