Почему в jQuery Datatable есть такой префикс, как sDom, oLanguage?

#jquery #datatables

#jquery #таблицы данных

Вопрос:

Я использую DataTable, который я инициировал с помощью,

 var datatable = $('#datatble').DataTable({
    ... (Some stuff around there)
    oLanguage: {
        sSearch: '_INPUT_'
        lengthMenu: '_MENU_',
    },
    language: {},
    sDom: '',
});
 

Мой вопрос в том, почему существует префикс для таких свойств, как sDom, oLanguage, sSearch ?

Без language: {}, свойства lengthMenu это не сработало. Без префикса это соответствующее свойство не работало.

Пожалуйста, объясните мне, почему это происходит?

Что это такое prefix имеется в виду?

Ответ №1:

Они определяют тип переменных, к которым они относятся. s является строкой, b является логическим значением, o является объектом и т.д. Он называется венгерской нотацией и указан на их странице часто задаваемых вопросов

Ответ №2:

DataTables имеет два стандарта именования:

  • старые имена венгерских обозначений (для версий до 1.10)
  • более новые имена camelCase (начиная с 1.10)

Если вы используете последнюю версию таблиц данных (начиная с версии 1.10 и далее), вы можете использовать либо новый стандарт именования, либо старый.

В официальной документации есть страница, которая документирует сопоставление между двумя стандартами именования.

Новый API 1.10 больше, чем старый (до 1.10) API, поэтому в некоторых случаях нет более старого эквивалента в венгерском стиле для новых имен camelCase.

Рассматривая один из примеров в вашем вопросе:

 oLanguage: {
  sSearch: '_INPUT_',
  lengthMenu: '_MENU_',
}
 

Нет такого свойства, как oLanguage.lengthMenu — оно должно быть:

  • sLengthMenu если вы используете oLanguage (старый стиль)
  • lengthMenu если вы используете language (новый стиль)

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