在同一名称空间内调用函数

时间:2018-01-28 21:16:46

标签: javascript webpack laravel-mix

我正在javascript中构建验证模块,并希望根据input-element上的data-attribute调用某些验证函数。

所以调用函数是一个变量,我习惯称之为函数:window[var_name]()

但在模块化的环境中,这似乎不起作用;如果我在不同的模块中取代所述功能并导入它;有用;但最好是我想在验证模块中使用thos函数及其逻辑。

//--- ./validation.js

// importing common functions
import * as common from './common.js';

export function validateInput($el)
{
  let type = $el.data('validation-type').split('|');
  let val = $el.val();

  // some whitelisting logic
  // and traversing the type-array
  var functionName = 'valid_'+type[i]; // eg valid_email

  // This works if I place the `valid_email()` function in common.js
  var result = common[functionName](val); 

}

function valid_email(val)
{
   // some validation logic
   return true;
}

将函数替换为自己的common.js并将其作为常用函数导入/命名。因为它使用其(通用)命名空间。

但是我怎样才能在同一个模块中调用该函数?

1 个答案:

答案 0 :(得分:0)

将函数附加到对象并像这样调用它:

TypeError: parse() got an unexpected keyword argument 'transport_encoding'