So, my second question is, are there any method to simulate the case
through the v8 internal API? or I must change the code to correct the
behavior?

In fact, I need a compatibility list focus on some similar issues,
because I must align to IE and FF instead of safari. Since most of our
users are using damned IE, I must make them happy, because they don't
care any standard :(

At least, I should know what issues have been categorized as safari
style like this, or I can simulate part of those issues through v8
internal API.

On 9月9日, 下午2时56分, Mads Sig Ager <[email protected]> wrote:
> Aliased eval is handled in a special way.  According to the
> specification it would be fine to completely disallow the use of
> aliased eval:
>
> Paragraph 15.1.2.1 of ECMA-262:
>
> "If value of the eval property is used in any way other than a direct
> call (that is, other than by the explicit use of its name as an
> Identifier which is the MemberExpression in a CallExpression), or if
> the eval property is assigned to, an EvalError exception may be
> thrown."
>
> In practice, webpages rely on using eval so we do not disallow it.
> Instead, an aliased call to eval will evaluate the code in the global
> scope.  JSC and V8 have the same behavior in this case.
>
> -- Mads
>
>
>
> On Wed, Sep 9, 2009 at 5:49 AM, Flier Lu<[email protected]> wrote:
>
> > ECMA-262 define the with statement, which could add object to the
> > front of the scope chain.
>
> > For example, the following statements will return 3, because 'a' was
> > defined in the with statement
>
> >>with({a:1})eval("a+2")
> > 3
>
> > In the current v8 implementation (v1.3.9), if we use a alias of eval
> > method, the with statement doesn't work
>
> >> var eval1=eval; with({b:1})eval1("b+2")
> > undefined:1: ReferenceError: b is not defined
> > b+2
>
> > I'm not sure whether it is ok base on design or just a implement
> > issue?
>
> > 12.10 The with Statement
> > Syntax
> > WithStatement :
> > with ( Expression ) Statement
> > Description
> > The with statement adds a computed object to the front of the scope
> > chain of the current execution
> > context, then executes a statement with this augmented scope chain,
> > then restores the scope chain.
>
> > Semantics
> > The production WithStatement : with ( Expression ) Statement is
> > evaluated as follows:
> > 1. Evaluate Expression.
> > 2. Call GetValue(Result(1)).
> > 3. Call ToObject(Result(2)).
> > 4. Add Result(3) to the front of the scope chain.
> > 5. Evaluate Statement using the augmented scope chain from step 4.
> > 6. Let C be Result(5). If an exception was thrown in step 5, let C be
> > (throw, V, empty), where V is the
> > exception. (Execution now proceeds as if no exception were thrown.)
> > 7. Remove Result(3) from the front of the scope chain.
> > 8. Return C.
> > NOTE
> > No matter how control leaves the embedded 'Statement', whether
> > normally or by some form of abrupt
> > completion or exception, the scope chain is always restored to its
> > former state12.10 The with Statement
> > Syntax
> > WithStatement :
> > with ( Expression ) Statement
> > Description
> > The with statement adds a computed object to the front of the scope
> > chain of the current execution
> > context, then executes a statement with this augmented scope chain,
> > then restores the scope chain.
--~--~---------~--~----~------------~-------~--~----~
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
-~----------~----~----~----~------~----~------~--~---

Reply via email to