在js中获取函数的内容

时间:2016-06-27 11:40:46

标签: javascript

我有一个脚本可以抓取页面中的所有脚本。我这样做:

scripts = $(this).contents().find('script');

然后我检查这个脚本是否是文本:

if( $(this).text() != '' ) 

如果是,我还需要检查这个脚本是否有一个名为init的函数,所以我这样做

if (typeof $(this).init == 'function')

到目前为止这个工作正常。我的问题是我需要获取该init函数的内容。

除了init函数之外,我还要添加$(this).text(),还有一个document.ready和另一个函数。

我只需要init的内容。

2 个答案:

答案 0 :(得分:0)

如果您有对该功能的引用,并且它看起来像您那样,那么您只需调用

var myFn = $(this).init.toString()

你将把这个函数作为一个字符串。您可以根据自己的喜好对其进行操作,然后使用以下方法之一评估字符串

  • new Function(myFn)()
  • eval(myFn)
  • (1, eval(myFn))

如果你需要从被调用函数中的调用该函数,你可以试试这个:

arguments.callee.toString()

例如

console.log(arguments.callee.toString())

请注意使用arguments.callee won't work in strict mode

我希望有帮助

答案 1 :(得分:0)

任何功能:

var foo = function() {
   console.log('a')
}

可以转换为字符串表示形式,如下所示:

var functionString = foo.toString();

回到javascript:

var functionAgain = eval("(" + functionString + ")");
functionAgain()