最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript Function函數(shù)理解與實戰(zhàn)

 更新時間:2017年12月01日 14:20:14   投稿:laozhang  
小編給大家?guī)硪黄P于javascript的基礎教學內容,關于Function函數(shù)的訓練與理解,一起學習下吧。

Function函數(shù)是javascript的基礎也是實現(xiàn)功能的一個引爆點,我們通過實例分析讓你對Function函數(shù)有一個更加深刻的理解以及在實際中的用法講解。

Function 確實是一個對象.而我們定義的任何一個函數(shù)其實都是Function 對象的一個實例,也可以理解為指向 Function 對象的一個實例.

既然是對象的一個實例,那肯定指向了Function 類型的一個引用. 既然指向了一個引用類型的內存地址,那你也可以簡單的把我們定義的函數(shù)理解為一個變量,這個變量指向了一個引用類型的地址,這個地址指向了Function 對象的一個實例.

既然我們定義的函數(shù)其實是一個變量,那這個函數(shù)實例地址可以同時指向多個變量.

看下面的代碼:

var add = new Function("n", "m", "return n + m");

上面是標準的函數(shù)定義,調用了Function對象的構造函數(shù),這個構造函數(shù)把前面的N個參數(shù)都默認為新函數(shù)的參數(shù),直到最后一個參數(shù)認為是新函數(shù)的函數(shù)體.

從上面的語句中非常直觀的看到 add這個變量指向了一個Function 類型的實例,但是這種命名方法非常繁瑣,等價于:

(1)函數(shù)表達式

var add=function(n,m){
return n+m;
}

(2)函數(shù)申明

function add(n,m){
return n+m;
}

由于javascript語言中的申明提前,所以一版提倡用第二種方法定義函數(shù),關于函數(shù)申明提前單獨開辟一篇來說

但是第一種定義方法讓人很直觀看到 add 是一個指向函數(shù)實例的一個變量.

既然是一個變量,就可以賦值給其他變量,可以當做參數(shù)在函數(shù)中傳遞,也可以從函數(shù)返回.

所以 var add2=add3=add; 現(xiàn)在 三個變量都指向了這個實例的引用, 現(xiàn)在 add=null; 以后 add2,add3 倆個函數(shù)完全可以使用不受影響,因為add 移除函數(shù)對象的引用后指向了null的引用.所以根本不影響add2 和 add3 兩個函數(shù).

所以函數(shù)可以當做其他函數(shù)的參數(shù)傳入.

所以函數(shù)可以當做函數(shù)的返回值返回.

因為函數(shù)名只是一個指向函數(shù)實例的變量,所以javascript中函數(shù)不會有 重載,因為相同的變量指向的是相同的引用地址.最后表示的還是同一個函數(shù).

函數(shù)既然是對象的實例,那么就應該有屬性,就應該有方法.所以javascript中的 函數(shù)有屬性也有方法.

比較重要的4個屬性 arguments , this , length , prototype

arguments 表示當前函數(shù)的參數(shù)類數(shù)組,這個屬性很特殊,他自己還有個屬性叫 callee ,

arguments.callee 屬性保存了一個指針,指針指向了擁有此 arguments 屬性的函數(shù)實體(也就相當于函數(shù)名)

this屬性是當前環(huán)境,類似與C# 中的this,表示當前上下文

length 屬性表示當前函數(shù)接收最大參數(shù)個數(shù)

prototype 表示該函數(shù)的原型,也就是把對象實例的方法完整的保存下來,換句話說就是原型上的方法都繼承下來了.比如 toString() valueOf() 等.

接下來,我們來看看function函數(shù)種類

普通函數(shù):介紹普通函數(shù)的特性:同名覆蓋、arguments對象、默認返回值等。

function ShowName(name) {
 alert(name);
}

匿名函數(shù):介紹匿名函數(shù)的特性:變量匿名函數(shù)、無名稱匿名函數(shù)。

//變量匿名函數(shù),左側可以為變量、事件等
var anonymousNormal = function (p1, p2) {
 alert(p1+p2);
}
anonymousNormal(3,6);//輸出9

閉包函數(shù):介紹閉包函數(shù)的特性。

function funA() {
 var i = 0;
 function funB() { //閉包函數(shù)funB
  i++;
  alert(i)
 }
 return funB;
}
var allShowA = funA(); //全局變量引用:累加輸出1,2,3,4等
 
function partShowA() {
 var showa = funA();//局部變量引用:只輸出1
 showa();
}

相關文章

  • javascript中apply、call和bind的使用區(qū)別

    javascript中apply、call和bind的使用區(qū)別

    下面小編就為大家?guī)硪黄猨avascript中apply、call和bind的使用區(qū)別。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-04-04
  • JavaScript ES6中的簡寫語法總結與使用技巧

    JavaScript ES6中的簡寫語法總結與使用技巧

    我們在看編寫的JS ES6代碼時經常會看到許多簡寫的語法,本篇文章就為大家一一介紹JavaScript ES6可以簡寫的語法
    2018-12-12
  • JavaScript對象創(chuàng)建及繼承原理實例解剖

    JavaScript對象創(chuàng)建及繼承原理實例解剖

    本文將用實例講解一下JavaScript對象創(chuàng)建及繼承原理:JavaScript中的繼承是使用原型鏈的機制,對象創(chuàng)建使用Function構造器,感興趣的朋友可以詳細了解下本文,或許可以幫助到你
    2013-02-02
  • JavaScript的三座大山之單線程和異步

    JavaScript的三座大山之單線程和異步

    這篇文章主要為大家詳細介紹了JavaScript之單線程和異步,使用JavaScript,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • javascript閉包入門示例

    javascript閉包入門示例

    這篇文章主要介紹了多個javascript閉包入門示例,理解了這幾個例子,對于閉包,應該可以算是入門了,需要的朋友可以參考下
    2014-04-04
  • 深入理解JavaScript 函數(shù)

    深入理解JavaScript 函數(shù)

    下面小編就為大家?guī)硪黄钊肜斫釰avaScript 函數(shù)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • javascript window.opener的用法分析

    javascript window.opener的用法分析

    window.opener 返回的是創(chuàng)建當前窗口的那個窗口的引用
    2010-04-04
  • 12條寫出高質量JS代碼的方法

    12條寫出高質量JS代碼的方法

    這篇文章給大家講述了如何遵循12條方法來寫出高質量的JS代碼的經驗,有這方便需要的朋友參考下吧。
    2018-01-01
  • 30分鐘就入門的正則表達式基礎教程

    30分鐘就入門的正則表達式基礎教程

    30分鐘內讓你明白正則表達式是什么,并對它有一些基本的了解,讓你可以在自己的程序或網頁里使用它。
    2013-02-02
  • asm.js使用示例代碼

    asm.js使用示例代碼

    asm.js是一個底層、格外為 JavaScript 子集優(yōu)化的編譯器。這是 Mozilla 研究項目,類似 Emscripten, Mandreel, 和 LLJS,這個示例讓我們簡單學習一下asm.js的使用
    2013-11-11

最新評論

三明市| 沙河市| 齐河县| 台东县| 仁布县| 淳安县| 沁源县| 铅山县| 鄂尔多斯市| 炉霍县| 葫芦岛市| 沾益县| 五原县| 济源市| 乃东县| 莱州市| 彭阳县| 两当县| 崇明县| 绍兴市| 渝中区| 滦平县| 定州市| 寿阳县| 海淀区| 沅陵县| 崇阳县| 临夏县| 古浪县| 昭觉县| 德江县| 鲁甸县| 山阳县| 澄城县| 舟曲县| 名山县| 崇左市| 甘洛县| 建阳市| 绥芬河市| 潜江市|