你不知道的JS(this)---#

默认绑定

------------

隐式绑定

------------

显式绑定

(apply,call)

硬绑定解决绑定丢失问题(bind)

------------

new绑定

new调用函数时(构造函数调用时)发生步骤

1.创造一个全新的对象

2.这个新对象会被执行[[Prototype]]连接

3.这个新对象会绑定到函数调用的this

4.如果函数没有返回其他对象,自动返回这个新对象

new会改变硬绑定函数的this,使用new硬绑定函数主要是为了预先设置函数的一些参数

------------

判断this

1.是否在new中调用,this=>新创建的对象

2.时候通过apply,call或者硬绑定,this=>指定对象

3.时候有某个上下文对象中调用obj.foo(),this=>obj

4.this=>window(underfined)

 

================

以null,underfunded传入call。。会在调用时候被忽略,会把this默认绑定到全局对象

更安全的做法是使用Object.create(null)

==================

箭头函数的绑定无法被修改

posted @ 2018-12-06 21:50  lemonib  阅读(108)  评论(0编辑  收藏  举报