在下面的函数上调用toString()会在浏览器中返回不同的字符串。我了解这是因为ECMA-262 15.3.4.2为每个供应商留出了回旋余地。
Chrome会返回除所有语法外的注释。不幸的是,Firefox 3.6忽略了注释。根据Firefox的行为,我尚未测试IE,Opera或Safari。
function foo() {
/* comment */
var bar = true;
}
具体来说,我正在尝试将元数据嵌入函数中经过特殊格式化的注释块中。稍后,将解析函数toString()方法的返回值,并将这些值作为对象返回。
我一直无法找到兼容性表或toString()的替代品。社区有什么想法吗?顺便说一句,预处理JS文件不是一个选择。 :(
非常感谢。 :)
最佳答案
尽管不像嵌入注释那样直接,但是由于函数是JS中的一流对象,因此您可以为其指定任意属性。例如。:
> function f(x) { return x * x; }
undefined
> f
function f(x) { return x * x; }
> f.comment = 'Hello'
Hello
> f.comment
Hello
这样,您可以将整洁的元数据清晰,可移植地嵌入到函数对象中。
关于JavaScript在Function对象上使用toString来读取文本内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2650593/