每个函数都包含两个非继承而来的方法:call()和apply();
在JavaScript中,call和apply作用是一样的,都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部this的指向。
1 | function fruits(){} |
当想另外一个对象想使用fruits中的say方法时不用重新写,使用call和apply可以实现“劫持”别人的方法。
1 | function fruits(){} |
区别:参数书写方式不同
call(thisObj, arg1, arg2, arg3, arg4);
apply(thisObj, [args]);
thisObj:call和apply第一个参数是一样的,该参数将替代Function类里面的this对象。
arg1,arg2….:是一个个的参数,
args:一个数组或类数组,是一个参数列表。
用法
改变函数作用域
1 | var name = "小白"; |
实现继承
1 | //实现js继承 |
作者:书虫和泰迪熊
链接:https://www.jianshu.com/p/aa2eeecd8b4f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。