Безопасно ли объявлять метод удаления в JavaScript?

Итак, вопрос просто, если безопасно (мудрый) объявить метод, называемый "удалить" в JavaScript. Пример:

var request = {
    delete : function (url) {
        // Some code...
    }
}
request.delete('http://page.dev/users/1');

Я тестировал это в Firefox и это функционально, но просто интересно, может ли это вызвать проблемы в некоторых других браузерах; или вообще, если это хорошая практика.

Ответы

Ответ 1

У вас никогда не будет проблемы, если вы используете this['style'], но с this.style вам следует избегать зарезервированных слов, которые включает удаление. Согласно спецификации, на самом деле нормально использовать зарезервированные слова в качестве имен свойств, но я все равно избегал бы их, потому что есть некоторые плохие реализации вокруг (также у него просто плохое использование зарезервированных слов, независимо от контекста).

Ответ 2

Нет, это не очень хорошая идея, потому что delete - это ключевое слово. В новейших версиях они ограничивали места, где это может вызвать проблемы, но все еще есть некоторые.

Один из способов избежать любой проблемы - использовать:

var request = {
    "delete" : function (url) {
        // Some code...
    }
}
request["delete"]('http://page.dev/users/1');

Но это, вероятно, немного менее оптимизировано, и это вроде уродливо. Я бы пошел с другим именем, таким как "удалить".

Ответ 3

В соответствии с спецификацией языка:

Идентификационные имена - это токены, которые интерпретируются в соответствии с грамматикой, приведенной в разделе "Идентификаторы" главы 5 стандарта Unicode, с небольшими изменениями. Идентификатор - это имя идентификатора, которое не является зарезервированнымWord (см. 7.6.1).

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

Ответ 5

Я бы использовал другое ключевое слово, как и предлагалось - вы можете использовать синонимы типа remove или purge - вы получаете идею.

Но более важно - убедитесь, что вы выполняете проверку на стороне сервера для удобочитаемости вызова. В противном случае любой может создать вызов удаления с помощью "http://page.dev/users/1"

Ответ 6

Следует заметить, что даже использование синтаксиса командной строки для доступа к свойствам небезопасно для всех браузеров.

В любом случае обозреватель Internet Explorer 7 и 8 будет аварийно завершен.