- 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
- 隐式丢失:将属于某个对象的函数再次赋值给变量或作为参数传递,此时通过变量或参数执行该函数,this指向window(非严格模式,严格模式为undefined)
- 强制绑定:利用 函数的方法(call,apply,bind) 强行修改this的指向,改啥是啥!
- 利用bind方法,找回隐式丢失的this
setTiemout(obj.show.bind(obj), 2000); // 两秒后打印obj
- 利用bind方法,找回隐式丢失的this
- new绑定:利用new关键字执行函数,此时函数内的this指向new出来的对象
- 面向对象语法
- 默认绑定:没有明确隶属对象的函数,被直接执行,函数内部的this指向window(非严格模式,严格模式为undefined)
- 函数的方法 - 强制绑定this的方法
- 函数名.xxx()
- call:立即执行改变了this之后的函数
- 参数:第一个,是要改变的this的指向;第二个~,全部传给了形参
- 返回值:原函数执行后的返回值
- apply:立即执行改变了this之后的函数
- 参数:第一个,是要改变的this的指向;第二个,必须为数组,数组会自动解析并将所有数据传入原函数的形参(类似于数组传给了arguments)
- 返回值:原函数执行后的返回值
- bind:并不会立即执行改变this之后的函数,作为返回值返回
- 参数:第一个,是要改变的this的指向;第二个~,全部传给了形参
- 返回值:改变了this指向之后的新函数
【Java script基础学习】关于this
最新推荐文章于 2022-11-27 16:23:52 发布