函数与方法
- 函数function:独立的function,称之为函数
- 方法method:当一个函数属于一个对象时,称这个函数为这个对象的方法
闭包
定义
狭义:JS中的一个函数,如果访问了外层作用域的变量,那么它就是一个闭包
性能查看
在内存中,闭包虽然没有被销毁,但是在其中的属性没有被使用,JS引擎会删除这些没有被使用的属性
this
全局作用域下指向
- 浏览器:window(globalObject)
- Node环境: {}
上面这个图片就是Node的this指向{}的解释
this指向什么
- this的绑定和定义的位置(编写的位置)没有关系
- this的绑定和调用方式以及调用位置有关系
- this是在运行时被绑定的
绑定规则
- 默认绑定
- 隐式绑定
- 显示绑定
- new绑定
默认绑定
独立函数调用
独立函数调用可以理解成函数没有被绑定到某个对象上调用
隐式绑定
调用方式是通过
某个对象进行调用的。也就是它的调用位置中,是通过某个对象发起的函数调用。
显示绑定
显示绑定优先级 > 默认绑定
applycallbind
apply
apply()方法调用一个具有给定this值的函数,以及以一个数组(或一个类数组对象)的形式提供的参数。
apply(thisArg)
apply(thisArg, argsArray)
call
call()方法使用一个指定的this值和单独给出的一个或多个参数来调用一个函数。
function.call(thisArg, arg1, arg2, ...)
bind
bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被指定为bind()的第一个参数,而其余参数将作为新函数的参数,供调用时使用
function.bind(thisArg[, arg1[, arg2[, ...]]])
底层伪代码
小知识点
new绑定
优先级
this规则之外
忽略显示绑定
显示绑定,传入一个null或者undefined,那么这个显示绑定会被忽略
间接函数引用
箭头函数
箭头函数不使用this的四种标准规则(也就是不绑定this),而是根据外层作用域来决定this
做题分析
左边是window的原因:定义对象{}没有产生作用域,只是一个对象而已,所以上层作用域是window
学习笔记随记,版权归coderWhy所有