在开发中遇到this指向问题,除了使用箭头函数外,我想着能不能用bind来解决。我在用fn的建议写法时绑定就出错误,使用传统写法就ok。MDN上也查不出问题在哪
在开发中遇到this指向问题,除了使用箭头函数外,我想着能不能用bind来解决。我在用fn的建议写法时绑定就出错误,使用传统写法就ok。MDN上也查不出问题在哪
个人猜测:
{
funcName(args...) {
// ...
}
}
这种是语法层面的 声明方法 操作,编译器能接受的只是 funcName(...) {...}
这么个结构, }
之后就不允许出现 .
这种行为了。
而
{
funcName: funciton(args...) {
//...
}.bind(...) // 注意到 bind 返回的仍然是一个 function
}
这种是为 funcName
这个键赋值一个 Function
类型的匿名函数的值。
所以应该是语法层面的问题。
如有错误还请海涵 : )
var obj = {
func01: function() {},
func02() {}
};
这应该是两种写法上的区别
func01是在执行那一行的时候,function才定义的,当执行bind的时候function就已经定义好了,所以使用bind不会出错,
而func02是在定义obj的过程中定义的,当执行到func02的时候,这时候函数的声明有可能还没执行完,所以这时候调用bind方法会报错
10 回答11.4k 阅读
4 回答3.2k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
第二种合法适因为满足
的形式,value表示的范围很大可以是很多合法语句,声明、运算、赋值、iife...,function(){}.bind()就是合法语句;
第一种ES6的简写
可以理解成
被解析成
的形式,但是并不会把
解析成
的形式,换句话说,如果你那种形式合法