我有一个接受回调并将this
绑定到它的函数。如果使用箭头函数调用函数作为回调,我想抛出一个错误(因为我无法将this
绑定到箭头函数)。
类似的东西:
doSomethingWithMyCallback(function(){}); // ok
doSomethingWithMyCallback(() => {}); // should throw an error
如何检查回调是否不是箭头功能(即我可以将this
绑定到它)?
答案 0 :(得分:3)
ES2015标准使Function.prototype.toString
的定义更清晰(与ES5.1相比),现在可以确定它是否是正常的"或使用它的箭头功能。
字符串表示必须具有FunctionDeclaration,FunctionExpression,GeneratorDeclaration,GeneratorExpression,ClassDeclaration,ClassExpression,ArrowFunction,MethodDefinition或GeneratorMethod的语法,具体取决于对象的实际特征。
f.toString()
会带有第一个字符f
(如function
),如果它是"正常"功能或使用开括号(
(如() => {}
中所述)。
如果有人担心覆盖该功能的功能toString
,可以使用Function.prototype.toString.call(f)
调用该功能。
参考文献: