在我的webpack开发案例中,我需要通过function.toString()
将函数输出为字符串。但是webpack可能会将某些语句转换为模块样式。
const myFunc = function{
this.methods.log(Date.now())
}
myFunc.toString()
"myFunc(){this.methods.log(_Users_xxx_Desktop_designer_web_node_modules_babel_runtime_corejs2_core_js_date_now__WEBPACK_IMPORTED_MODULE_3___default()());}"
我需要什么:
"myFunc(){this.methods.log(Date.now())}"
我处理了this
指向正确对象的指针。我只希望Webkit忽略此功能。
答案 0 :(得分:0)
对于这种特殊情况,转换是首先由babel完成的,如果您使用transform-runtime
插件,它将决定Date
API是否需要来自core-js
。 Webpack稍后介入,因为它看到Date
现在引用了导入的库,因此将import语句转换为WEBPACK_IMPORT_MODULE
。
您可以调整babel以禁止其变换Date
,也可以相反。您编写一个函数字符串,然后对其求值以得到一个真正的函数。
const myFuncStr = `function (){
this.methods.log(Date.now())
}`
const myFunc = eval(myFuncStr)