在JS中,call()方法和apply()方法到底该怎么应用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在JS中,call()方法和apply()方法到底该怎么应用?相关的知识,希望对你有一定的参考价值。
1.apply与call是更改对象的内部指针,即改变对象的this指向的内容;
2.call与apply的第一个参数都是要传入给当前对象的对象,及函数内部的this,后面的参数都是传递给当前对象的参数。
详细用法如下:
1.call()
语法:obj1.call(obj2[,param1,param2,...]);
定义:用obj2对象来代替obj1,调用obj1的方法。即将obj1应用到obj2上;
说明:call 方法可以用来代替另一个对象调用一个方法,call 方法可将一个函数的对象上下文从初始的上下文改变为由 obj2 指定的新对象,如果没有提供 obj2参数,那么 Global 对象被用作 obj2。
2.apply()
语法:obj1.call(obj2[,arrArg]);
定义:用obj2对象来代替obj1,调用obj1的方法,即将obj1应用到obj2上,
说明:call ()和apply()作用一样,但是call()可以接收任何类型的参数,而apply()只能接收数组参数。
3.基本用法
4.继承特性
参考技术A 给楼主一个链接,看完绝对知道它们的用法:http://blog.csdn.net/qianzai5765638/article/details/6952321本回答被提问者采纳
js中apply和call方法
1.apply的使用,call的使用改变this对象
//apply和call使用 function Person(age,sex){ this.age=age; this.sex=sex; } //通过原型添加方法 Person.prototype.sayHi=function(x,y){ console.log("你好啊"+this.sex); return 1000; } var person=new Person(10,"男"); person.sayHi(); // function Student(name,sex){ this.name=name; this.sex=sex; } //此时改变了原型对象的问题, var stu=new Student("小明","人妖"); var r1=person.sayHi.apply(stu,[10,20]);//改变了this对象给stu添加了sayHi对象 var r2=person.sayHi.call(stu,10,20);
2.apply和call使用总结
//apply和call的使用方法 /* * apply的使用语法 * 函数名字.apply(对象,[参数1,参数2,...]); * 方法名字.apply(对象,[参数1,参数2,...]); * call的使用语法 * 函数名字.call(对象,参数1,参数2,...); * 方法名字.call(对象,参数1,参数2,...); * * 作用:改变this的指向 * 不同的地方:参数传递的方式是不一样的 * * 只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么就可以使用apply或者是call的方法改变this的指向 * * */ //apply和call都可以改变this的指向 //函数的调用,改变this的指向 function f1(x,y) { console.log((x+y)+":===>"+this); return "这是函数的返回值"; } //apply和call调用 var r1=f1.apply(null,[1,2]);//此时f1中的this是window console.log(r1); var r2=f1.call(null,1,2);//此时f1中的this是window console.log(r2); console.log("=============>"); // 改变this的指向 var obj={ sex:"男" }; // 本来f1函数是window对象的,但是传入obj之后,f1函数此时就是obj对象的 var r3=f1.apply(obj,[1,2]);//此时f1中的this是obj console.log(r3); var r4=f1.call(obj,1,2);//此时f1中的this是obj console.log(r4);
以上是关于在JS中,call()方法和apply()方法到底该怎么应用?的主要内容,如果未能解决你的问题,请参考以下文章