1.bind 改变了函数内部this执行的上文环境
<script>/* 改变函数内部的this关键字的指向 */var name ="cheng";var obj ={name:"li"}/* bind()改变了函数内部this执行的上文环境 */var test = function(){console.log(this.name)}.bind(obj);test() //li</script>
2.call 改变函数this的指向,函数调用的时候执行
<script>/* call改变函数this的指向,函数调用的时候执行 */var li ="li";var obj = {name:"cheng"}var test = function(){console.log(this.name)}test.call(obj) //cheng</script><script>/* call(thisObj,params) */function sayName(label){console.log(label+":"+this.name)}var name ="window";var cheng = {name:"cheng"}var wang = {name:"wang"}sayName("window") //window:windowsayName.call(cheng,"chengchao") //chengchao:chengsayName.call(wang,"女孩子") //女孩子:wang</script>
3.apply 改变函数this的指向,函数调用的时候执行
<script>function go(name,age){console.log(this.name+":"+this.age)console.log(name)console.log(age)}var li = {name:"李梦瑶",age:23}var zhang = {name:"张三丰",age:100}go.apply(li,["li",24]) //传的是数组go.call(zhang,"zhang",111) //一个一个的传参</script>
