是否有比arguments.callee.name
更安全的选择?
我的团队正在研究大量使用类继承的Chromecast应用程序库。我们想确保扩展类时某些方法被覆盖。
为此,我们想出了一个辅助函数来对这些方法进行存根:
const methodNotImplemented = (method) => throw new Error(`Method ${method} not implemented`);
现在,如果我们可以这样做避免手动传递方法名称,那将真的很酷,但是我从eslint等处收到各种警告。
const methodNotImplemented = (method) => throw new Error(`Method ${method || argument.callee.name} not implemented`);
这样可以吗,因为该代码只能在Chrome中运行,还是有人知道吗?
用法示例:
class Base {
// method that should be overridden by application
requiredMethod() {
methodNotImlemented(' Base.requiredMethod')
};
initialize() {
requiredMethod();
}
}
//我们要确保此处的方法被覆盖
class MyPlugin extends Base {
}
答案 0 :(得分:0)
使用new Error().stack
似乎是最好的解决方案。谢谢@vlaz。