js中apply和call方法
Posted 流世幻羽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中apply和call方法的主要内容,如果未能解决你的问题,请参考以下文章