我有这样的功能:
function foo(){
}
我可以打电话:
foo().bind(self);
为什么Javascript让我这样做而没有运行时错误?
我认为唯一有效的语法是:
var func = foo.bind(self);
func();
以简写形式表示:
foo.bind(self)();
更进一步,我认为这样的事情是可能的:
function foo(){
}.bind(self);
但最后一个似乎不起作用
答案 0 :(得分:0)
foo().bind(self);
但如果foo()
没有返回函数对象,则可能抛出。喜欢这个
function bar() {
}
function foo(){
return bar;
}
因此bind
实际执行bar
;
最后一个是函数声明,所以你不能使用点表示法。为了实现这一点,您需要将其转换为表达式。最简单的方法是添加大括号
(function foo(){
}.bind(self));
然而,这是无用的,因为您无法存储结果。如果将其分配给func
,则函数声明将成为表达式。以下至少是有道理的:
var func;
func = function foo(){
}.bind(self);