Skip navigation.

exploreopera

| Help

Sign up | Help

eval ... everywhere?

, , , , ,

Harvested from an Opera bug report, here is another interesting surprise from Gecko internals: Object.prototype.eval . It's like a normal eval() but in the scope of that object. In other words, doing

document.body.eval('tagName');


is practically the same as doing

with(document.body){eval('tagName');}


(Before you ask, the best practice would be to say either
document.body.tagName
or
document.body['tagName']
Using eval should be avoided and generally can be avoided without problems. So don't let me catch you using any of the two first snippets on a production site!)

So hey Gecko, where did this come from? Is it something we should copy and implement or something we should scorn and point fingers at?

praising Firefox :)no ballads in this Opera

Comments

avatar
According to the Mozilla docs - http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object:eval , it was implemented as part of JS1.1, deprecated in JS1.2 and actually removed in JS1.4. So it's not something Opera should be copying IMHO.

I haven't tested, but if it's still present in Firefox 1.5, you should file a bug against Mozilla.

By dwright, # 7. September 2006, 12:27:00

avatar
hum... is that why w3c DOM 3 LS testsuite fails on Opera ?

By xErath, # 7. September 2006, 17:56:22

avatar
dwright: thank you! :smile:

xErath: don't know - I have to check. That test suite was buggy when I tried running it in Opera, but that's a while ago and I reported some issues that probably got fixed.

By hallvors, # 7. September 2006, 18:37:20

avatar
It should be scorned!

By JibberJim, # 8. September 2006, 14:34:36

avatar
dwright: my Firefox/1.5.0.1 certainly has it. Should I bug this without testing in a nightly build though? I don't mind filing it but wouldn't go as far as downloading a nightly build - more than enough of test builds from Opera so no, thanks.. :smile:

By hallvors, # 8. September 2006, 19:29:19

avatar
javascript:var foo=new Object();foo.bar="foobar";alert(foo.eval('b'+'ar'));

Shows "foobar" in a nightly (specifically Minefield 3.0a1/20060908). You should file that bug.

By dwright, # 9. September 2006, 14:46:28

Write a comment

You must be logged in to write a comment. if you're not a registered member, please sign up.