Функция JavaScript .toString () в веб-пакете - PullRequest
0 голосов
/ 18 апреля 2019

В моем случае разработки веб-пакета мне нужно вывести функцию в виде строки по 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 голосов
/ 19 апреля 2019

В этом конкретном случае преобразование сначала выполняется с помощью babel, поскольку вы используете плагин transform-runtime, он решает, что API Date должен исходить из core-js. Webpack делает это позже, потому что Date теперь ссылается на импортированную библиотеку, поэтому преобразует оператор импорта в WEBPACK_IMPORT_MODULE.

.

Вы либо настраиваете babel, чтобы запретить его преобразование Date, либо можете сделать наоборот. Вы пишете строку функции, а затем проверяете ее, чтобы получить реальную функцию.

const myFuncStr = `function (){
  this.methods.log(Date.now())
}`

const myFunc = eval(myFuncStr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...