- this:这个,一般存在于函数中,是一个指向,只有在执行时才能确定自身的信息,表示当前所属函数的执行对象
函数执行对象执行了this所在的函数的对象 常见的this的绑定情况
默认绑定:没有明确隶属对象的函数,被直接执行,函数内部的this指向window(非严格模式,严格模式为undefined)
function fn(){
console.log(this)
}
fn(); // window
隐式绑定:属于某个对象的函数,被对象执行时,函数内部的this指向当前对象var obj = {
show:fn
}
obj.show(); // obj
隐式丢失:将属于某个对象的函数再次赋值给变量或作为参数传递,此时通过变量或参数执行该函数,this指向window(非严格模式,严格模式为undefined)
setTiemout(obj.show, 1000); // 一秒后打印window强制绑定:利用 函数的方法(call,apply,bind) 强行修改this的指向,改啥是啥!
利用bind方法,找回隐式丢失的this
setTiemout(obj.show.bind(obj), 2000); // 两秒后打印objnew绑定:利用new关键字执行函数,此时函数内的this指向new出来的对象
面向对象语法 函数的方法 - 强制绑定this的方法
函数名.xxx()call:立即执行改变了this之后的函数
参数:第一个,是要改变的this的指向;第二个~,全部传给了形参返回值:原函数执行后的返回值 apply:立即执行改变了this之后的函数
参数:第一个,是要改变的this的指向;第二个,必须为数组,数组会自动解析并将所有数据传入原函数的形参(类似于数组传给了arguments)返回值:原函数执行后的返回值 bind:并不会立即执行改变this之后的函数,作为返回值返回
参数:第一个,是要改变的this的指向;第二个~,全部传给了形参返回值:改变了this指向之后的新函数



