function derp() { a(); b(); c(); }
derp.toString()
が返さ"function derp() { a(); b(); c(); }"
れますが、関数の本体のみが必要なので"a(); b(); c();"
、式を評価できるためです。クロスブラウザでこれを行うことは可能ですか?
function derp() { a(); b(); c(); }
derp.toString()
が返さ"function derp() { a(); b(); c(); }"
れますが、関数の本体のみが必要なので"a(); b(); c();"
、式を評価できるためです。クロスブラウザでこれを行うことは可能ですか?
var entire = derp.toString();
var body = entire.slice(entire.indexOf("{") + 1, entire.lastIndexOf("}"));
console.log(body); // "a(); b(); c();"
検索を使用してください。これはこの質問の複製です
{
firstと last の間のテキストが必要なので}
:
derp.toString().replace(/^[^{]*{\s*/,'').replace(/\s*}[^}]*$/,'');
1 つの正規表現ですべてをカバーするのではなく ( )、置換を正規表現に分割したことに注意してください.replace(/^[^{]*{\s*([\d\D]*)\s*}[^}]*$/,'$1')
。
注: 受け入れられる答えは、インタプリタが「関数」と「{」の間でコメントを返すなどのクレイジーなことをしないことに依存します。IE8 は喜んでこれを行います:
>>var x = function /* this is a counter-example { */ () {return "of the genre"};
>>x.toString();
"function /* this is a counter-example { */ () {return "of the genre"}"
次のようなものが必要です。
var content = derp.toString();
var body = content.match(/{[\w\W]*}/);
body = body.slice(1, body.length - 1);
console.log(body); // a(); b(); c();