2016-12-15 2 views
8

Я хочу, чтобы получить все функции кода (с параметрами) и распечатать его в div.codeпечати код функции с параметрами JS

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, но он не работает

ответ

6

Вы должны использовать 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

Я рекомендовал бы вызвать функцию ваниль ToString от Function объекта к stringify вашей функции, как это:

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

Вы можете использовать:

f.toString(); 

function f(a, b, c) { 
 

 
} 
 

 
document.write(f.toString().replace(/\n/g, "<br>"));

Смежные вопросы