我想获取所有功能代码(带参数)并在div.code中打印
html文件
<script src='script.js'></script>
...
<input type=text value='text' id='my_input'>
<div class='code'></div>
<script>
document.querySelectorAll('div.code')[0].innerHTML=func(document.getElementById('my_input'));
</script>
的script.js
function func(param){
console.log(param);
}
所以在div.code中它应该是
"function func(text){
console.log(text)
}"
我应该用它做什么?我试图使用toString,toSource,JSON.stringify但它不起作用
答案 0 :(得分:8)
您应该使用String()
从功能代码
function f(param) {
console.log(param);
}
alert( String(f) );
// ...innerHTML = String(f);
如果您想用输入替换param
,可以使用String(f)
结果操作字符串
alert( String(f).replace(/param/g, 'text') );
// ...innerHTML = String(f).replace(/param/g, document.getElementById('my_input'));
看看这个jsFiddle example
另请阅读此处有关String() function
的更多信息答案 1 :(得分:4)
您可以使用:
~/Library/Preferences/com.apple.dt.Xcode.plist
f.toString();
答案 2 :(得分:1)
我建议调用Function
对象的vanilla toString函数来对你的函数进行字符串化处理:
Function.prototype.toString.call(yourFunctionHere);
//or just use it directly on your function, if you're not going to modify the prototype
yourFunction.toString();
这会像你提到的那样打印你的功能。
如果您想在之后替换值,可以将replace
与正则表达式结合使用。
像这样:
function myFunction(param1){
alert(param1);
}
Function.prototype.toString.call(myFunction).replace(new RegExp('param1', 'g'), 'theParam');
这将为您提供以下内容:
"function myFunction(theParam){
alert(theParam);
}"