Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Вопрос по названию методов (https://javascript.ru/forum/offtopic/34724-vopros-po-nazvaniyu-metodov.html)

kobezzza 16.01.2013 17:22

Вопрос по названию методов
 
На днях разобрался с АПИ indexedDB, но возникли некоторые вопросы по названию методов АПИ, например у объекта курсора есть метод continue и если писать например так:

cursor.continue();

, то у меня падает GCC с ошибкой и ругается ИДЕ, приходится писать
cursor['continue']();

и тоже самое с методом delete у объекта данных.

Мне почему то всегда казалось, что использование названий операторов в качестве имён идентификаторов запрещено, однако такое АПИ уже реализовано в FF, Chrome и IE10, как же так получается?

nerv_ 16.01.2013 18:13

Цитата:

Сообщение от kobezzza
Мне почему то всегда казалось, что использование названий операторов в качестве имён идентификаторов запрещено

переменные, функции и т.п. называть так нельзя, но свойства/методы объекта можно

Цитата:

Сообщение от kobezzza
то у меня падает GCC с ошибкой и ругается ИДЕ, приходится писать

сталкивался с таким. В моем случае было export (если не ошибаюсь).

Все претензии к GCC :)

kobezzza 16.01.2013 18:18

Цитата:

Сообщение от nerv_ (Сообщение 227597)
переменные, функции и т.п. называть так нельзя, но свойства/методы объекта можно

Не знал, но в старых ишаках не пашет, так что облом :)
Нужно будет запостить разрабам GCC о баге.

nerv_ 16.01.2013 18:36

Цитата:

Сообщение от kobezzza
Не знал

это, мое мнение, нежели аксиома. Сам посуди, есть объект имя которого "безопасно", какая разница, какие "имена" я использую внутри (него)?
alert( { for: 0 }.for );

kobezzza 16.01.2013 18:38

Цитата:

Сообщение от nerv_ (Сообщение 227609)
это, мое мнение, нежели аксиома. Сам посуди, есть объект имя которого "безопасно", какая разница, какие "имена" я использую внутри (него)?
alert( { for: 0 }.for );

Угу, логично:)

monolithed 17.01.2013 00:45

Цитата:

Сообщение от kobezzza
, то у меня падает GCC с ошибкой и ругается ИДЕ, приходится писать
cursor['continue']();

GCC в advanced mode такую запись преобразует в cursor.continue();
Чтобы не писать квардатные скобки нужно использовать директиву @expose:

/** @expose */
Array.prototype.foo = function() {
   return this;
};


Цитата:

Сообщение от kobezzza
Не знал, но в старых ишаках не пашет, так что облом

IE8 включительно. Также упадет на свойствах import/export. Просто ключи нужно брать в кавычки:

{'import' : 1}['import'];


Часовой пояс GMT +3, время: 04:46.