国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript函數內部屬性和函數方法實例詳解

2019-11-20 10:22:47
字體:
來源:轉載
供稿:網友

函數是由事件驅動的或者當它被調用時執行的可重復使用的代碼塊。

函數是對象,有自己的屬性和方法 。首先通過console下輸出的函數屬性方法來直觀的看一下:

函數內部屬性只要包括兩個特殊的對象:arguments和this。

函數屬性包括:length和prototype

函數方法(非繼承)包括:apply()和call()

繼承而來的函數方法:bind()、toString()、toLocaleString()、valueOf()

其他的目前不熟,后面再補充

1. 函數內部屬性

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

arguments屬性

arguments是一個類數組對象,包含傳入函數的所有參數,arguments的主要用途是保存函數參數,但這個對象有一個callee屬性,該屬性是一個指針,指向擁有這個arguments對象的函數,下面是非常經典的階乘函數。

function factorial (num){if(num <= 1){return 1;} else{return num * factorial(num-1); }}

定義階乘函數一般都會用到遞歸算法,如上面代碼所示,在有函數名字,并且函數名字以后也不會改變的情況下,這種定義沒問題。但是這個函數的執行與函數名factorial緊緊耦合在了一起,為了消除這種緊密耦合現象(函數名字改變等情況),可以使用arguments.callee。

function factorial(num){if(num<=1){return 1;} else{return num * arguments.callee(num-1);}}

重寫后的factorial()函數的函數體內,沒有再引用函數名factorial。這樣即使改變函數名字,都可以保證正常完成遞歸調用。例如:

var trueFactorial = factorial; //改變原函數體的指針(保存位置)factorial = function (){ //factorial 指向返回0的新函數return 0;}alert(trueFactorial(5)); //120alert(factorial(5)); //0

如果,不使用arguments.callee,那么trueFactorial(5)同樣返回0;

this屬性

2. 函數的方法

每個函數都包含兩個非繼承而來的方法:apply()和call()。這兩個方法的用途都是在特定的域中調用函數(看到這里木有看懂);其真正強大之處在于能夠擴充函數賴以運行的作用域

關于JavaScript函數內部屬性和函數方法的相關知識,小編就給大家介紹這么多,希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肥西县| 曲沃县| 通州市| 承德市| 如皋市| 宾川县| 和林格尔县| 凉城县| 丹寨县| 余庆县| 遂川县| 凌云县| 登封市| 巴彦县| 内丘县| 台中市| 山阳县| 湖南省| 潍坊市| 那曲县| 泰顺县| 莎车县| 扶沟县| 凉城县| 灵山县| 定安县| 麻江县| 都匀市| 达孜县| 正阳县| 西乌珠穆沁旗| 永州市| 眉山市| 太和县| 德惠市| 临桂县| 永善县| 平塘县| 黄石市| 道孚县| 乌鲁木齐县|