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

首頁 > 開發(fā) > JS > 正文

javascript中call,apply,callee,caller用法實例分析

2024-05-06 16:53:34
字體:
來源:轉載
供稿:網友

本文實例講述了javascript中call,apply,callee,caller用法。分享給大家供大家參考,具體如下:

實踐一:call,apply 用來讓一個對象去調用本不屬于自己的方法,兩者都可以傳遞參數,call的參數是列表形式,apply的參數是數組形式

var person = { "name":"Tom", "say":function(){  console.log("person say"); }, "count":function(x,y,z){  console.log('x= ' + x + ', y= ' + y + ', z= ' + z); }, "sayName":function(){  console.log(this.name); }}// 下面的示例是數組 arr 去調用person的say方法 , 這里call用來讓數組調用本不屬于它自己的方法var arr = [1,2];person.say.call(arr);// call 還可以傳遞參數person.count.call(arr,1,2,3); // x= 1, y= 2, z= 3// apply 還可以這樣person.count.apply(arr,[1,2,3]); // x= 1, y= 2, z= 3

實踐二:call,apply 用來修改this,   同樣引用上例的person對象

var program = {"name":"AlphaGo"}person.sayName.call(program); // AlphaGoperson.sayName.apply(program); // AlphaGo

實踐三:call,apply把偽數組轉換為數組

// call,apply 把偽數組轉換為數組var wArr = {0:"hello",1:"world","length":2};var arr1 = Array.prototype.slice.call(wArr);var arr2 = Array.prototype.slice.apply(wArr);console.log(arr1); // [hello,world]console.log(arr2); // [hello,world]

這里找到一篇詳細的  關于偽數組的文章

實踐四:單純的arguments對象

// 有關argumentsfunction count(a,b,c){ console.log(arguments.length); if(count.length === arguments.length) {  console.log('實際參數與形參個數相同'); }else{  console.log('實際參數與形參個數不同'); }}count(1,2,3); // 實際參數與形參個數相同count(1,2); // 實際參數與形參個數不同/*這里count.length 表示形參個數arguments.length 表示實參個數*/

實踐五:caller 用于查看,函數本身被哪個函數調用

function fn1(){ if(fn1.caller){  console.log(fn1.caller.name + " 是函數fn1的調用者"); }else{  console.log("直接執(zhí)行"); }}function fn2(){ fn1();};fn2(); // fn2是是函數fn1的調用者

實踐六:callee 返回正被執(zhí)行的 Function 對象,常用于匿名函數的遞歸與arguments一起配合使用。

var sum = function(n){ if(n>0) {  return n + arguments.callee(n-1); } return 0;};var total = sum(10);console.log(total); // 55// arguments.callee 代指函數自身。function test(){ console.log(arguments.callee);}test(); // 輸出函數自身的字符串表達式

 

希望本文所述對大家JavaScript程序設計有所幫助。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东乌| 波密县| 化隆| 东台市| 富锦市| 大同市| 安龙县| 新野县| 鹤岗市| 沂源县| 张掖市| 郁南县| 伊春市| 西和县| 姜堰市| 漠河县| 旺苍县| 金门县| 乐平市| 红安县| 西乌珠穆沁旗| 西峡县| 大厂| 济南市| 五原县| 丹东市| 平定县| 项城市| 鄄城县| 雅安市| 台中县| 云南省| 化德县| 西吉县| 嘉兴市| 广河县| 新巴尔虎右旗| 定州市| 海盐县| 滁州市| 且末县|