有没有简单的方法可以获取有关JS代码行的建议?

时间:2019-02-07 03:32:51

标签: javascript code-editor

如果我有一个字符串 valid JS代码,例如fread,我可以对其进行评估—很简单。
JS代码中的"'foobar'.charCodeAt(0)"(或eval())或CLI中的new Function()(或node -e)解决了这一任务。

但是我需要对JS代码的不完整行提出潜在的建议。
例如,如果我有一个字符串d8 -e,我想要类似数组"'foobar'.cha"(或['charAt', 'charCodeAt, 'matchAll'])的东西。

是否有一个可靠的,最好是开箱即用的解决方案?对我来说这没什么大不了,我也不想花太多时间。

谢谢。

1 个答案:

答案 0 :(得分:2)

这可能比这更复杂,但是一旦您能够正确地解析代码,就可以通过执行以下操作来获得一系列原型函数:Object.getOwnPropertyNames(String.prototype)-或使用您需要的任何原型,只需使用String

function getFuncs(type) {
  if (type === 'string') {
    var funcs = Object.getOwnPropertyNames(String.prototype).reduce((accum, el) => {
      accum.push(el);
      return accum;
    }, []);
    //console.log(funcs);
    return funcs;
  }
  console.log(`${type} not implemented yet..`);
  return;
}

var divEl = document.querySelector('#divEl');
document.querySelector('#inputEl').addEventListener('keyup', e => {
  divEl.innerHTML = '<ul>';
  var funcs = getFuncs(typeof e.target.value);
  var filtered = funcs.filter(fnName => {
    return fnName.toLowerCase().indexOf(e.target.value.toLowerCase()) > -1;
  });
  if (e.target.value.trim() != '') {
    filtered.forEach(fnName => divEl.innerHTML += `<li>${fnName}</li>`);
  }

  divEl.innerHTML += '</ul>';
});
"foobar.<input id="inputEl" type="text" />"
<br />
<div id="divEl"></div>