Сообщение от Zeroglif
|
Ты почитай, как евангелист пиарит
|
Ага, полистаю.
Сообщение от Zeroglif
|
alert( (obj.m)() ); //-> object
alert( (obj.m = obj.m)() ); //-> global
|
Да, я подробней покажу, всем остальным, кому интересно:
Сообщение от 11.1.6 The Grouping Operator
|
NOTE
This algorithm does not apply GetValue to Result(1). The principal motivation for this is so that
operators such as delete and typeof may be applied to parenthesised expressions.
|
Поэтому, в первом случае после оператора группировки, у нас всё ещё Reference Type, а во втором случае, оператор присваивания (как и другие - "ИЛИ", или "запятая"), вызовет для AssignmentExpression GetValue, который, вызвав в свою очередь [[Get]], вернёт уже
значение свойства, т.е. функцию, и будет уже не тип Reference. Для выражения вызова, это означает использовать Global в качестве this-value.
Сообщение от 11.13.1 Simple Assignment ( = )
|
2. Evaluate AssignmentExpression.
3. Call GetValue(Result(2)).
|
Сообщение от Octane
|
Всегда смущало, что вместо context многие пишут scope — это же не правильно?
|
С точки зрения Scope и [[Scope]] в ES (и основной точки зрения -
понимания этих сущностей) - конечно, это неправильно. Этим, кстати, грешит фреймворк ExtJS, который везде для handler-ов событий указывает вторым параметром -
scope: this, имея в виду
thisValue.