发表于: 2019-12-02 23:38:33

1 1105


今天完成的事情: 

1 this指向整理

2 call()、apply()、bind()整理

明天计划的事情:

1 复习,调试接口

遇到的问题:

1 暂无

收获:

call() 调用对象的方法,以另一个对象替换当前对象,可将函数上下文从初始的上下文改变为指定的对象
apply() 同上,区别是除第一个参数外,其他都要放在一个数组中
上两个使用哪:在js中,某个函数的参数数量是不固定的,当你的参数是明确知道数量时用call ;而不确定的时候用 apply,然后把参数 push 进数组传递进去。当参数数量不确定时,函数内部也可以通过arguments这个类数组对象来遍历所有的参数
bind():方法与 apply 和 call 很相似,也是可以改变函数体内 this 的指向,返回值是函数名( 加()调用 )
方法创建一个新函数,称为绑定函数,当调用这个绑定函数时,绑定函数会以创建它时传入bind()方法的第一个参数作为 this,第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数



1 函数:函数没有被对象调用,this指向window (严格模式指向undefined)。有被对象调用,指向他上一级对象
2 箭头函数:箭头函数不绑定this,它会捕获其所在(即定义的位置)上下文的this值,作为自己的this值
3 对象中方法内的函数:即使被对象调用,this还是指向window
4 构造函数this:用new关键字,改变this指向。如下让它指向对象a
特殊情况:当new遇到return时 。函数返回return,值是一个对象( { },函数不带括号,带就只代表运行),那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例。还有一点就是虽然null也是对象,但是在这里this还是指向那个函数的实例
总结:this指向在函数定义时是确定不了的,函数执行时才能确定,实际上this的最终指向的是那个调用它的对象(不是指向最外层,而是他的上一级对象)
多项引用优先级:new > call( ) apply( ) > 声明变量 var bar : obj.foo(); >  对象调用 >  默认绑定(严格模式下绑定到undefined,否则绑定到window对象) 



返回列表 返回列表
评论

    分享到