Webpack中的Javascript函数.toString()

时间:2019-04-18 11:29:01

标签: javascript webpack

在我的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忽略此功能。

1 个答案:

答案 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)