为什么jQuery Datatable 中有sDom、oLanguage 这样的前缀?

问题描述

我正在使用一个我已经启动的数据表,

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

我的问题是为什么像 sDom,oLanguage,sSearch 这样的属性有前缀?

如果没有 language: {},,lengthMenu 属性不起作用。没有前缀,相应的属性不起作用。

请解释一下,为什么会这样?

那些 prefix 是什么意思?

解决方法

这些指定了它们的变量类型。 s 是字符串,b 是布尔值,o 是一个对象等等。它被称为 Hungarian Notation 并在它们的 FAQ 页面上指定

,

DataTables 有两个命名标准:

  • 较旧的匈牙利符号名称(适用于 1.10 之前的版本)
  • 新的驼峰命名法(从 1.10 开始)

如果您使用的是最新版本的 DataTables(从 1.10 版开始),您可以使用 new naming standard or the old one

官方文档中有一页documents the mapping介于两种命名标准之间。

新的 1.10+ API 比旧的(1.10 之前的)API 大,因此在某些情况下,新的驼峰命名法没有旧的匈牙利风格等效项。

查看您问题中的示例之一:

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

没有像 oLanguage.lengthMenu 这样的属性 - 它必须是:

  • sLengthMenu 如果您使用的是 oLanguage(旧样式)
  • lengthMenu 如果您使用的是 language(新样式)

我建议尽可能使用新名称 - 特别是在新项目中。匈牙利表示法选项已弃用,将在未来版本中移除。但是您会看到许多旧示例和教程使用的旧名称。