如果我有一个字符串 valid JS代码,例如fread
,我可以对其进行评估—很简单。
JS代码中的"'foobar'.charCodeAt(0)"
(或eval()
)或CLI中的new Function()
(或node -e
)解决了这一任务。
但是我需要对JS代码的不完整行提出潜在的建议。
例如,如果我有一个字符串d8 -e
,我想要类似数组"'foobar'.cha"
(或['charAt', 'charCodeAt, 'matchAll']
)的东西。
是否有一个可靠的,最好是开箱即用的解决方案?对我来说这没什么大不了,我也不想花太多时间。
谢谢。
答案 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>