关于javascript中call()和apply()方法的总结
程序员文章站
2024-01-18 16:09:28
前段时间在使用javascript的过程中遇到了继承的问题,自己顺便就对call()和apply()方法进行了了解。 两个方法的共同之处:这两个方法作用相同,都用来改变当前函数调用的对象,即改变this的指向。 两个方法的不同之处:不同之处就是两种方法的传参方式不同,apply接受的是数组参数,ca ......
前段时间在使用javascript的过程中遇到了继承的问题,自己顺便就对call()和apply()方法进行了了解。
两个方法的共同之处:这两个方法作用相同,都用来改变当前函数调用的对象,即改变this的指向。
两个方法的不同之处:不同之处就是两种方法的传参方式不同,apply接受的是数组参数,call接受的是连续参数。
apply()方法的定义:
Function.apply(obj,args);
obj:这个对象会代替Function类里边所指向的this对象。
args:这是一个数组,作为参数传递给Function。
示例:
<script> function Intro(name,age){ this.name=name; this.age=age; this.speak=function(){ console.log('My name is '+this.name+'.'+' I am '+this.age+' years old.'); } } function IntroInh(name,age){ Intro.apply(this,arguments); } var lm=new IntroInh('LiMing',20); lm.speak(); </script>
上面的代码做了一个简单的继承应用,也展示了apply()在其中的作用。
call()方法的定义:
Function.call(obj,[param1[,param2[,…[,paramN]]]]);
obj:这个对象会代替Function类里边所指向的this对象。
params:这是一个参数列表。
示例:
<script> function Intro(name,age){ this.name=name; this.age=age; this.speak=function(){ console.log('My name is '+this.name+'.'+' I am '+this.age+' years old.'); } } function IntroInh(name,age){ // Intro.apply(this,arguments); Intro.call(this,name,age);//对比上面apply()的不同; } var lm=new IntroInh('LiMing',20); lm.speak(); </script>
这里只做一个简单的概念和应用方法的叙述,具体的项目应用还需要我们进一步的实践。
推荐阅读
-
关于javascript中call()和apply()方法的总结
-
javascript字符串中的属性和方法介绍
-
PHP中的魔术方法总结和使用实例_PHP
-
JavaScript中数组(Array)的排序方法(reverse和sort)
-
php中关于抽象(abstract)类和抽象方法的问题解析
-
JavaScript的call方法,apply方法,caller属性,callee属性的代码详解
-
兄台息怒,关于arguments,您的想法和大神是一样一样的----闲聊JS中的apply和call
-
js中call apply方法的使用介绍
-
[前端] js中call方法的理解和思考
-
javascript中call,apply,bind的用法对比分析_基础知识