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

首頁(yè) > 開(kāi)發(fā) > JS > 正文

JS函數(shù)內(nèi)部屬性之a(chǎn)rguments和this實(shí)例解析

2024-05-06 16:46:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在函數(shù)內(nèi)部,有兩個(gè)特殊的對(duì)象:arguments和this。

1、arguments

  arguments是一個(gè)類(lèi)數(shù)組對(duì)象。包含著傳入函數(shù)中的所有參數(shù)。但這個(gè)對(duì)象還有一個(gè)名叫callee的屬性,該屬性是一個(gè)指針,指向擁有這個(gè)arguments對(duì)象的函數(shù)。

  經(jīng)典案例:階乘函數(shù)

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

定義階乘函數(shù)一般都要用到遞歸算法,如上所示,但你會(huì)發(fā)現(xiàn),這個(gè)函數(shù)的執(zhí)行與函數(shù)名factorial緊緊耦合在了一起,為解決這個(gè)問(wèn)題,我們可以使用arguments.callee。

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

我們重寫(xiě)之后,factorial()函數(shù)里沒(méi)有引用函數(shù)名factorial。這樣無(wú)論引用函數(shù)時(shí)使用的是什么名字,都可以保證正常完成遞歸調(diào)用。例如:

var trueFac = factorial;factorial = function(){  return 0;}console.log(trueFac(5)); // 120console.log(factorial(5)); // 0

2、this

函數(shù)內(nèi)部的另一個(gè)對(duì)象是this,this引用的是函數(shù)執(zhí)行的環(huán)境對(duì)象(當(dāng)在網(wǎng)頁(yè)的全局作用域中調(diào)用函數(shù)時(shí),this對(duì)象引用的就是window)。

window.color = "red";var o = { color: "blue" };function sayColor(){  alert(this.color);}sayColor(); // "red"o.sayColor = sayColor;o.sayColor(); // "blue"

在上面這個(gè)函數(shù)sayColor()是在全局作用域中定義的,它引用了this對(duì)象。由于在調(diào)用函數(shù)之前,this的值并不確定,因此this可能會(huì)在代碼執(zhí)行過(guò)程中引用不同的對(duì)象。

當(dāng)在全局作用域中調(diào)用sayColor()時(shí),this引用的時(shí)全局對(duì)象window;換句話(huà)說(shuō),對(duì)this.color求值會(huì)轉(zhuǎn)換成對(duì)window.color求值,于是結(jié)果就返回了"red"。而當(dāng)把這個(gè)函數(shù)賦給對(duì)象o并調(diào)用o.sayColor()時(shí),this引用的是對(duì)象o,因此對(duì)this.color求值會(huì)轉(zhuǎn)換成對(duì)o.color求值,所以返回“blue”。

函數(shù)的名字僅僅是一個(gè)包含指針的變量。

總結(jié)

以上所述是小編給大家介紹的JS函數(shù)內(nèi)部屬性之a(chǎn)rguments和this實(shí)例解析,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 华阴市| 金华市| 施甸县| 扬州市| 大方县| 正宁县| 宝鸡市| 司法| 大名县| 揭西县| 庄浪县| 称多县| 永寿县| 宁明县| 吴桥县| 恭城| 大邑县| 沈丘县| 二连浩特市| 德保县| 汕尾市| 金坛市| 色达县| 仪征市| 宿迁市| 镇赉县| 麟游县| 宜黄县| 四会市| 蕉岭县| 芜湖市| 永清县| 松潘县| 榕江县| 衡南县| 怀来县| 泸州市| 墨玉县| 高邑县| 运城市| 葫芦岛市|