一段JavaScript代码是否可以引用自身?也就是说,我可以以编程方式构建一个变量,使其值是声明它的JavaScript文件的原始文本内容吗?
答案 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()
答案 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';
如果这就是你的意思。