Подтвердить что ты не робот

Реальные примеры функций Ecmascript, возвращающих ссылку?

Считать спецификацию EcmaScript, раздел 8.7 Тип ссылочной спецификации:

Тип Reference используется для объяснения поведения таких операторов как delete, typeof и операторов присваивания. [...] Ссылка - это разрешенная привязка имени.

Функциональным вызовам разрешено возвращать ссылки. Эта возможность допускается исключительно ради объектов-хозяев. Никакая встроенная функция ECMAScript, определенная этой спецификацией, не возвращает ссылку, и нет никакой возможности, чтобы определяемая пользователем функция возвращала ссылку.

Те последние два предложения произвели на меня впечатление. При этом вы можете делать такие вещи, как coolHostFn() = value (допустимый синтаксис, кстати). Поэтому мой вопрос:

Существуют ли какие-либо реализации EcmaScript, которые определяют объекты функции хоста, которые приводят к значениям Reference?

4b9b3361

Ответ 1

Google Chrome работает очень много. Однако вы заметите, что в консоли вы получите ReferenceError: Invalid left-hand side in assignment при выполнении следующих действий:

var myObj = new Object();
function myFunc() {
    myObj.test = "blah";
    return myObj;
}
myFunc() = new String("foobar");

Это ранняя ошибка, и, поскольку реализация v8 ECMAScript должна работать, если она правильно выполняет myFunc, прежде чем принимать опорную ошибку.

Итак, в текущей версии v8? Да и Нет. Он реализуется по умолчанию (из-за того, как язык структурирован), однако возможность останавливается по другой проблеме. coolHostFn() = value не должен возвращать ошибку и действительно должен быть выполнен правильно. Однако 3=4 должен, безусловно, возвращать ошибку присваивания левой стороны.

Не совсем ответ на ваш вопрос, но я надеюсь, что это поможет выяснить, почему он не работает.

(Здесь Issue/Ticket в случае, если кто-то хочет перезвонить... http://code.google.com/p/v8/issues/detail?id=838)