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

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:36:42
字體:
來源:轉載
供稿:網友

本文實例講述了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("直接執行"); }}function fn2(){ fn1();};fn2(); // fn2是是函數fn1的調用者

實踐六:callee 返回正被執行的 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(); // 輸出函數自身的字符串表達式

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.Vevb.com/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 双鸭山市| 沙雅县| 邻水| 彝良县| 聊城市| 双流县| 西乌珠穆沁旗| 东城区| 双辽市| 尉氏县| 霸州市| 微山县| 威远县| 天津市| 双流县| 芜湖县| 南康市| 凌海市| 东城区| 大理市| 铁力市| 固阳县| 龙里县| 陵川县| 广汉市| 沛县| 广东省| 长宁县| 隆德县| 留坝县| 永寿县| 邯郸市| 凭祥市| 无为县| 芒康县| 汝州市| 秀山| 秦皇岛市| 中方县| 武宣县| 巴塘县|