views:

38

answers:

1

Calling toString() on the function below returns different strings across browsers. I understand this is because ECMA-262 15.3.4.2 leaves wiggle room for each vendor.

Chrome returns the comments in addition to all syntax. Sadly Firefox 3.6 omits the comments. Based on Firefox's behavior I haven't tested IE, Opera, or Safari.

function foo() {
    /* comment */
    var bar = true;
}

Specifically, I am attempting to embed meta data within a specially formatted comment block within a function. Later the return value of the functions toString() method would be parsed and values returned as an object.

I've been unable to locate compatibility tables or alternatives to toString(). Does the community have any ideas? Btw, pre-processing JS files isn't an option. :(

Thanks a lot. :)

+1  A: 

Although not as direct as embedding comments, since functions are first-class objects in JS, you can specify arbitrary properties for them. E.g.:

> function f(x) { return x * x; }
undefined
> f
function f(x) { return x * x; }
> f.comment = 'Hello'
Hello
> f.comment
Hello

This way you can embed metadata into function objects cleanly and portably.

Max Shawabkeh