您的位置:首页 > Web前端 > JavaScript

理解 JavaScript 的 this 关键字

2011-10-25 13:27 309 查看
贴此图,作为
[译]理解Javascript关键字this 的注解,此图也参考了 [b]11.2.3
Function Calls
[/b]

11.2.3 Function Calls #

The production CallExpression : MemberExpression Arguments is evaluated as follows:

Let ref be the result of evaluating MemberExpression.

Let func be GetValue(ref).

Let argList be the result of evaluating Arguments, producing an internal list of argument values (see 11.2.4).

If Type(func) is not Object, throw a TypeError exception.

If IsCallable(func) is false, throw a TypeError exception.

If Type(ref) is Reference,
then

If IsPropertyReference(ref) is true, then

Let thisValue be GetBase(ref).

Else, the base of ref is an Environment Record

Let thisValue be the result of calling the ImplicitThisValue concrete method of GetBase(ref).

Else, Type(ref) is not Reference.

Let thisValue be undefined.

Return the result of calling the [[Call]] internal method on func, providing thisValue as the this value and providing
the list argList as the argument values.

The production CallExpression : CallExpression Arguments is evaluated in exactly the same manner, except that the containedCallExpression is
evaluated in step 1.

NOTE The returned result will never be of type Reference if func is
a native ECMAScript object. Whether calling a host object can return a value of type Reference is implementation-dependent. If a value of type Reference is
returned, it must be a non-strict PropertyReference.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: