《你不知道的JavaScript上卷》 笔记(一)
关于this绑定对象,主要取决于函数的调用位置
|
|
call() apply()
方法显式强制改变绑定对象Function.prototype.bind
1.创建一个全新的对象
2.新对象会被执行原型连接
3.新对象会被绑定到函数调用的this
4.如果函数没有返回其他对象,那么new表达式的函数调用会自动返回新对象
call , apply
) > 隐式绑定(上下文对象中调用)>默认绑定
|
|
|
|
如果创建一个函数的间接引用,那么调用这个函数会应用默认绑定规则
|
|
默认表达式 p.foo = o.foo
的返回值是目标函数的引用,因此调用位置是 foo( ) 而不是 p.foo 或者 o.foo ,所以这里会应用默认绑定
softBind()
|
|
这里 foo() 内部创建的剪头函数已经绑定了obj1, 在 bar 调用时也会绑定到 obj1 ,箭头函数的绑定不会被修改