一、Function.call()函数
1、a.call(b); //包含第三点[将.call(b)前面的对象传递给b对象] //很像继承
将a对象(所有)传递给b函数对象;
2、a.aMethod.call(b); //不会覆盖b中的同名方法
将a的aMethod方法传递给b函数对象;
3、测试代码如下:
- function A(nameA){
- this.name=nameA;
- this.showName=function(){
- return this.name;
- }
- }
- function B(nameB){
- A.call(this,nameB);
- this.showTest=function(){
- return nameB;
- }
- //重名方法
- //this.showName=function(){
- // return "Soul";
- // }
- }
- var b=new B("B");
- console.log(b.name+" "+b.showName()+" "+b.showTest()); //B B B(去掉注释则结果为:B Soul B)
二、Function.apply函数
1、Function.apply(obj,arguments)
args参数将会依次(从arguments[0]开始)传递给Function函数
2、代码示例如下:
- function A(nameA){
- this.name=nameA;
- this.showName=function(){
- return this.name;
- }
- }
- function B(nameA,nameB){//参数将依次传给A(),因此A的参数要写在前面
- //var arr=new Array();
- //arr[0]=nameB;
- //A.apply(this,arr); //参数一定为数组
- A.apply(this,arguments);
- this.showTest=function(){
- return nameB;
- }
- }
- var b=new B("A","B");
- console.log(b.name+" "+b.showName()+" "+b.showTest()); //A A B
3、apply其他用法
(1)、Math.max.apply(null,arr); //返回数组arr中的最大值
(2)、Array.prototype.push.apply(arr1,arr2); //将arr2添加到arr1中 arr1本身改变
三、Function.bind()函数
1、该方法可以创建一个新函数,该函数定义了函数内的this关键字,并可以指定初始化参数值
2、语法格式:oFunction.bind(thisObjet[,parameters]);
3、将this绑定到thisObject上