|
Posted by ThePsyko on 07/08/05 19:27
On 08 Jul 2005 in alt.2600, Michael Winter <m.winter@blueyonder.co.uk>
made their contribution to mankind by stating in
news:12vze.65588$G8.6372@text.news.blueyonder.co.uk:
> On 08/07/2005 12:05, ^reaper^ wrote:
>
> [snip]
>
>> Or, for example, say you want to reference a document object that
>> contains a variable component, you can do something like this:
>>
>> eval('document.all.'+name+'.style');
>
> Even then, it's not necessary:
>
> document.all[name].style
>
> The eval function is best left for /arbitrary/ strings that need to be
> evaluated as code. However, it is very rare that one will ever have
> such a need.
>
> The only use I've found so far is for emulating the
> Function.prototype.call or apply methods in (mainly) earlier IE
> versions. Unlike the dynamic construction of property names, there is
> no other way of building an argument list at run-time without the use
> of the apply method.
>
> var global = this;
>
> if('function' != typeof Function.prototype.apply) {
> Function.prototype.apply = function(o, a) {
> var x = [],
> p = ' $apply',
> r, u;
>
> if(null == o) {o = global;}
> while('undefined' != typeof o[p]) {p += p;}
> o[p] = this;
>
> if(a && (Array == a.constructor) && a.length) {
> for(var i = 0, n = a.length; i < n; ++i) {x[i] = i;}
> r = eval('o[p](a[' + x.join('],a[') + ']);');
> } else {
> r = o[p]();
> }
> o[p] = u;
>
> return r;
> };
> }
>
> Still, even that has a slight problem. Though IE will set the this
> operator value correctly for a null or undefined first argument, this
> value will not compare properly to the global object.
>
> All that said, given the fact that one usually knows how many
> arguments will be needed in a call to one of these methods, this form
> of generic emulation is rarely needed.
>
> I have seen other interesting uses for the eval function, but even
> they weren't really necessary.
>
> Mike
>
Sure they are... where would SQL injection be without the eval()
function?
:)
--
ThePsyko
Public Enemy #7
http://prozac.iscool.net
[Back to original message]
|