JavaScript中函數(shù)(Function)的apply與call理解
JavaScript函數(shù)調用分為4中模式:
1. 方法調用模式:即對象包含方法屬性,Obj.methodName()或者Obj[methodName]()。
2. 函數(shù)調用模式:即methodName()。
3. 構造器調用模式:即new MethodName()。
4. apply和call調用模式:即ObjA.apply(ObjB,args[])或者ObjA.call(ObjB,arg1,arg2...)。
函數(shù)調用時,除了接收形式參數(shù)外,還會接收this和arguments。其中this為函數(shù)對象上下文,arguments為實際參數(shù)。
apply和call實現(xiàn)同樣的功能,即切換函數(shù)對象的上下文(this指向的引用),區(qū)別在于形式參數(shù)不一樣。apply為arguments或者數(shù)組,call為以逗號隔開多個單獨形式參數(shù)。
function add(c) { alert(this.a+this.b+c); } var test={a:1,b:2} add.call(test,3);
在執(zhí)行add.call(test,3); 之前add和test都屬于window下,此時this指向window。add.call(test,3); 執(zhí)行時,進入add方法體,此時this由window切換為test,此時this.a=test.a,this.b=test.b,c為形式參數(shù)傳入的值,即alert()的結果為1+2+3=6。apply也是一樣的功能。
通過apply和call實現(xiàn)擴展和繼承:
function Animal(name){ this.name = name; this.showName = function(){ alert(this.name); } } function Cat(name){ Animal.call(this, name); } var cat = new Cat("Black Cat");//執(zhí)行時,Cat函數(shù)體的this由window切換為Cat{}, // Animal函數(shù)體的this.name通過形式參數(shù)傳入即為Black Cat,最終cat //得到的結果為cat=Cat{name:"Black Cat",showName: function(){ alert(this.name);}, cat.showName();//執(zhí)行時this由window切換為 //Cat{name:"Black Cat",showName: function(){ alert(this.name);} 此時this.name //為this.name=Cat.name,因此為Black Cat。
- 詳解JavaScript函數(shù)callee、call、apply的區(qū)別
- JavaScript函數(shù)apply()和call()用法與異同分析
- JS中call和apply函數(shù)用法實例分析
- javascript中call,apply,bind函數(shù)用法示例
- javascript基于原型鏈的繼承及call和apply函數(shù)用法分析
- Javascript中call和apply函數(shù)的比較和使用實例
- 從JQuery源碼分析JavaScript函數(shù)的apply方法與call方法
- JavaScript中的apply和call函數(shù)詳解
- JavaScript函數(shù)Call、Apply原理實例解析
相關文章
關于Error:Unknown?option?'--inline'報錯的解決辦法
這篇文章主要給大家介紹了關于Error:Unknown?option?'--inline'報錯的解決辦法,文中將解決的辦法介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09微信小程序實現(xiàn)發(fā)動態(tài)功能的示例代碼
最近做了一個校園拍賣小程序,想在里面添加一個類似校園圈功能,現(xiàn)在來一步一步實現(xiàn),對微信小程序實現(xiàn)發(fā)動態(tài)功能感興趣的朋友一起看看吧2022-08-08