對JS中函數的理解

來源:互聯網
上載者:User

標籤:val   代碼   apply   span   ret   指標   調用   alert   type屬性   

函數本質就是功能的集合

JS中函數是對象,因此,函數名實際上僅僅是一個指向函數對象的指標,不會與某個函數綁定,所以,JS中沒有重載(重載就是通過傳遞不同類型的參數,使兩個相同函數名的函數執行不同的功能)

var fn=function(a){return a+100;}fn=function(a){return a+200;}alert(fn(100));   //300

要訪問函數的引用(指標)而不是執行函數時,必須去掉圓括弧,加上圓括弧表示訪問函數執行後的結果

函數體內部的語句在執行時,一旦遇到return,函數就會結束(後面的代碼不會執行),並返回傳回值

傳回值可以是任何類型的值,如果沒有return或只有return而沒有傳回值,則函數返回預設值undefined

在函數內部,有兩個特殊的對象arguments和this

  a.arguments是一個類似數組(但不是數組)的對象,用於儲存函數的參數,即使函數定義時沒有定義參數,arguments也會儲存實際調用時使用的參數

  b.this表示當前函數執行的環境對象的引用

function fn(){return this;}fn();

函數擁有兩個屬性length和prototype

  a.length表示希望接收的參數個數,而不是實際接收的

  b.prototype儲存了參考型別的所有執行個體方法(tostring(),valueOf()等等),在ES5中,prototype屬性是無法枚舉的

函數擁有兩個非繼承而來的方法apply()和call(),這兩個方法的作用都是在特定的範圍中調用函數實際上等於設定函數體內this對象的值

  a.apply()方法可以接收兩個參數,一個是在其中運行函數的範圍,另一個時參數數組(可以沒有),參數數組可以是Array的執行個體,也可以是arguments對象

  b.call()方法和apply()方法作用相同,但接收參數的方式不同,call()第二個參數只能是函數參數的數組形式,也就是說第二個參數必須一個一個列出來

這兩個方法常用來擴充範圍

function fn1(a,b){return a+b;}function fn2(a,b){return fn1.apply(this,arguments);}alert(fn1(1,1));        //2alert(fn2(1,1));        //2
function fn1(a,b){return a+b;}function fn2(a,b){return fn1.apply(this,[a,b]);}alert(fn1(1,1));        //2alert(fn2(1,1));        //2
fn.call(window);       //fn在全域環境中執行fn.call(this);           //fn在當前環境中執行

ES5中還定義了一個方法bind(),這個方法會創造一個函數的執行個體,其this值會被綁定到傳給bind()方法的值

window.color=‘red‘;var p={color:‘blue‘};function fn(){alert(this.color);}var fn0=fn.bind(p);fn0();        //blue

  

  

 

對JS中函數的理解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.