🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
~~~ // 上下文有三种调用方式,call,apply,bind function f1() { console.log(this); } // call方法的第一个参数决定了函数内部的this值,apply可以替换call f1.call([1,2,3]); f1.call({name:"test", age:11}); f1.call(1); f1.call("abc") f1.call(true); f1.call(false); f1.call(undefined); /** * 总结: * 1. 第一个参数是对象,函数内部this指向该对象 * 2. 是undefeated,this指向window * 3. 数字, Number构造函数实例, new Number(1) * 字符串, new String("abc") * 布尔值, new Boolean(false) */ ~~~ ### call vs apply ``` 1. 都可以改变函数内部this的指向 2. 传参的形式不同 ``` ``` function toString(a,b,c){ console.log(a+" "+b+" "+c); } toString.call(null,1,3,5) //"1 3 5" toString.apply(null,[1,3,5])//"1 3 5" ``` ### bind