使用 ES2015,我想扩展 Function
类并将其实例用作可调用函数。
class Foo extends Function {
// how to wite behavior?
}
let foo = new Foo();
foo();
foo.call();
// this is callable, but no behavior defined
如何让 foo
在其声明中有其特定的行为?
最佳答案
Function
构造函数 accepts arguments :
new Function ([arg1[, arg2[, ...argN]],] functionBody)
在这种情况下,您可以使用适当的参数调用 super
:
// SNIPPET ONLY WORKS ON ES2015-ENABLED ENVIRONMENTS
"use strict";
class Foo extends Function {
constructor() {
super("a", "console.log(a);")
}
}
let foo = new Foo();
foo("one");
foo.call(null, "two");
现在,在字符串文字中编写 JavaScript 代码是一件痛苦的事情,函数文本中的代码是在全局范围内计算的,因此我们不能做一些事情,比如在构造函数中定义实际函数并从函数文本。所以这个用处有限。但是……
关于javascript - 如何在 JavaScript 中定义实例化函数的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35722036/