使用参数JS打印功能代码

时间:2016-12-15 09:40:07

标签: javascript function

我想获取所有功能代码(带参数)并在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但它不起作用

3 个答案:

答案 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);
 }"