绑定,调用和直接应用函数签名调用

我已经在JS编程了大约一年,我发誓有办法做到这一点:

function a(){ }.bind(this); 

要么

 function a(){ }.apply(this,null); 

我可以做这个:

 (function a(){ console.log('b'); }).apply(null); a(); //but this will throw an error 

有没有办法做我想做的事情? 我只是想调用apply,调用或绑定一个函数而不会丢失范围。

你在找什么

 var a = function a() { // ... }.bind(this); 

? 函数声明语句的上下文中不能使用函数作为expression式; 语法只是不允许它。 但是,通过在expression式中实例化函数并将引用分配给局部variables,您可以获得与函数声明语句非常相似的效果,如上所述。 当你这样做的时候,你的函数是在expression式的上下文中实例化的,所以把它作为一个对象来调用.bind()工作正常。