JavaScript可以自称吗?

时间:2011-09-17 03:12:59

标签: javascript

一段JavaScript代码是否可以引用自身?也就是说,我可以以编程方式构建一个变量,使其值是声明它的JavaScript文件的原始文本内容吗?

3 个答案:

答案 0 :(得分:3)

尝试,

(function foo() { var f = foo.toString(); return f; })()

其中f是您描述的变量。这也将其自身作为字符串返回,仅用于衡量标准。

答案 1 :(得分:2)

(function () { return arguments.callee.toString(); })()

与所选答案几乎相同,没有字符串的变量存储或函数名称。两者都没有真正提到自己。您无法执行$(this).closest('script')之类的操作来引用DOM中的JS文件。


你可以做的是与this类似的东西:

var w      =  window;
w.stored   =  [];
w.scripts  =  document.getElementsByTagName('script');
w.stored.push(w.scripts[ w.scripts.length - 1 ]);

如上所述,这可以完成,因为DOM按顺序加载脚本。您可以参考执行此操作的所有脚本,如w.stored[0]。使用jQuery,您可以$(w.stored[0]).text()

JSFiddle Demo

答案 2 :(得分:1)

  

一段JavaScript代码是否可以引用自身?

函数可以使用 arguments.callee (ECMA-262 10.6)引用自身。我认为它不是严格的模式,但这不应该是一个问题。您可以调用函数的 toString 方法来获取implementation-dependent representation of the function,它通常是与创建它的源代码等效的字符串,但它可能不是。

  

也就是说,我可以以编程方式构建一个变量,使其值是声明它的JavaScript文件的原始文本内容吗?

不是一般意义上的,例如你做不到:

var x = 'x';
getVaue(x); // var x = 'x';

如果这就是你的意思。