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

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

 更新時間:2019年07月24日 09:40:28   作者:Johnny丶me  
這篇文章主要介紹了javascript中call,apply,callee,caller用法,結合實例形式分析了javascript中call,apply,callee,caller功能、使用方法及相關操作注意事項,需要的朋友可以參考下

本文實例講述了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); // AlphaGo
person.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對象

// 有關arguments
function 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(); // 輸出函數自身的字符串表達式

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

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

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

相關文章

  • js動態(tài)實現表格添加和刪除操作

    js動態(tài)實現表格添加和刪除操作

    這篇文章主要為大家詳細介紹了js動態(tài)實現表格添加和刪除操作,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • JavaScript中對象屬性的添加和刪除示例

    JavaScript中對象屬性的添加和刪除示例

    用.為對象添加屬性,用關鍵字delete刪除屬性,下面為大家介紹下對象屬性的添加和刪除,需要的朋友可以參考下
    2014-05-05
  • 微信小程序中顯示倒計時代碼實例

    微信小程序中顯示倒計時代碼實例

    這篇文章主要介紹了微信小程序中顯示倒計時,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 前端js彈出框組件使用方法

    前端js彈出框組件使用方法

    這篇文章主要為大家詳細介紹了前端js彈出框組件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • js實現精確到秒的日期選擇器完整實例

    js實現精確到秒的日期選擇器完整實例

    這篇文章主要介紹了js實現精確到秒的日期選擇器,以完整實例形式分析了JavaScript日期選擇器的實現步驟與相關技巧,涉及JavaScript針對時間與日期的相關運算,需要的朋友可以參考下
    2016-04-04
  • JavaScript定時器使用方法詳解

    JavaScript定時器使用方法詳解

    這篇文章主要介紹了JavaScript定時器的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • JavaScript的Set數據結構詳解

    JavaScript的Set數據結構詳解

    這篇文章主要為大家介紹了JavaScript的Set數據結構,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • JavaScript的六種繼承方式(推薦)

    JavaScript的六種繼承方式(推薦)

    繼承是面向對象編程中又一非常重要的概念,JavaScript支持實現繼承,不支持接口繼承,實現繼承主要依靠原型鏈來實現的
    2017-06-06
  • JS正則表達式替換字符串replace()方法實例代碼

    JS正則表達式替換字符串replace()方法實例代碼

    正則表達式是用于匹配字符串中字符組合的模式,在js中正則表達式是對象,這篇文章主要給大家介紹了關于JS正則表達式替換字符串replace()方法的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • js實現淡入淡出輪播切換功能

    js實現淡入淡出輪播切換功能

    本文主要分享了javascript實現淡入淡出輪播切換功能的示例代碼。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01

最新評論

香河县| 田东县| 都江堰市| 平泉县| 福建省| 云梦县| 伽师县| 台东县| 碌曲县| 苏尼特左旗| 新沂市| 宜君县| 平山县| 郓城县| 泽州县| 万盛区| 浑源县| 昔阳县| 定边县| 株洲市| 大冶市| 夹江县| 云南省| 秭归县| 土默特右旗| 黔南| 甘孜县| 乌兰察布市| 长垣县| 宾阳县| 泸州市| 郁南县| 永顺县| 长泰县| 孝义市| 松潘县| 疏附县| 工布江达县| 奎屯市| 保康县| 南丹县|