js中call,caller,callee,aplly

来源:http://www.cnblogs.com/detanx/archive/2017/05/14/jscall.html
-Advertisement-
Play Games

1.函數的caller屬性 (1)、區分函數是在函數體調用還是頂層代碼中調用:頂層中調用函數,該函數的caller屬性返回null,在函數中調用,會返回調用發i函數的函數; 2.Arguments的callee屬性 (1)、使用Arguments的callee屬性來匿名遞歸調用函數 3.函數的app ...


1.函數的caller屬性

(1)、區分函數是在函數體調用還是頂層代碼中調用:頂層中調用函數,該函數的caller屬性返回null,在函數中調用,會返回調用發i函數的函數;

<script>
function testFun(){
    if(testFun.caller === null){
        document.write('在頂層中調用');
    }else{
          document.write('在h函數中調用');   
         document.write('在' + testFun.caller.name + '中調用');
    }    
}

/*直接調用*/、
 testFun();
/*函數中調用*/
funtion test(){
     testFun();
}
</script>

2.Arguments的callee屬性

(1)、使用Arguments的callee屬性來匿名遞歸調用函數

<script>
function outNum(x,y){
    document.write(x + <br>);
    if(x < y){
         x ++;
         return arguments.callee(x,y);
    }    
   else if(x > y){
         y --;
         return arguments.callee(x,y);
    }  
    else{
        return
    }
}

/*調用*/、
 outNum(9,4)
</script>

3.函數的apply()方法和call()方法

(1)、語法:funName.call(this[,arg1[,arg2....]]);

funName.apply(this,[arg1,arg2....]);apply方法後面的參數以數組的額形勢傳遞

<script>
function range(_price){
   if(typeof(_price) != 'number'){
        this._price = 1000; 
    }else{
       if(_price >1000){
           this._price = 1000; 
      }else{
          this._price = _price; 
      }
   }
}
/*aplly寫法*/
function Monitor(_price, _name)){
   this.name = _name;
   range.aplly(this,arguments);
}
/*call寫法
function Monitor(_price, _name)){
   this.name = _name;
   range.call(this,_price);
}
*/
Monitor.prototype = new range(); var Monitor1 = new Monitor('c1',800); document.write(monitor1.name,monitor.price); </script>

  


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

-Advertisement-
Play Games
更多相關文章
  • 本篇博客是《JWebFileTrans(JDownload):一款可以從網路上下載文件的小程式》系列博客的第三篇,本篇博客的內容主要是在前兩篇的基礎上增加多線程的功能。簡言之,本篇博客截止目前所達到的功能是:基於HTTP協議的多線程斷點遠程下載小程式 ...
  • 1.所有的標記都必須要有一個相應的結束標記 以前在HTML中,你可以打開許多標簽,例如<p>和<li>而不一定寫對應的</p>和</li>來關閉它們。但在XHTML中這是不合法的。XHTML要求有嚴謹的結構,所有標簽必須關閉。如果是單獨不成對的標簽,在標簽最後加一個"/"來關閉它。 2.所有標簽的元 ...
  • 示例html代碼: 獲得id為test的DOM對象,下麵就不一一獲取了。 test.innerHTML 描述:也就是從對象的起始位置到終止位置的全部內容,包括Html標簽。 上例中的test.innerHTML的值也就是“<span style="color:red">test1</span> te ...
  • 一、安裝node.js 方式很多npm,git等,新手建議從官網上直接去下載node的安裝包。一鍵安裝. 二、創建一個web伺服器。 三、讀取文件的方式(同步,非同步) 1.同步 2.非同步 三、事件迴圈 四、數據緩衝區 1.向緩存區寫入數據 2.讀取緩衝區的內容 3.Buffer 轉為JSON對象 4 ...
  • 3.下拉列表:<select name="" id=""> <option value=""></option> </select> 屬性:name="" 指定獲取輸入的名字。 value="" 不知道有什麼用。但我知道它有用。 在option標簽中預設選中屬性為 selected 在input標簽 ...
  • 【JavaScriptOPP基礎】【成員屬性與成員方法】【原型與原型鏈】【原型屬性與原型方法】【for-in迴圈】【JS OOP 中的繼承】【JS模式實現繼承的三種方式】【閉包】 ...
  • Position 屬性:規定元素的定位類型。即元素脫離文檔流的佈局,在頁面的任意位置顯示。 ①absolute :絕對定位;脫離文檔流的佈局,遺留下來的空間由後面的元素填充。定位的起始位置為最近的父元素(postion不為static),否則為Body文檔本身。 ②relative :相對定位;不脫 ...
  • interceptors click me ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...