如何根据if / else语句定义对象属性?

时间:2016-10-20 14:45:05

标签: javascript jquery object if-statement datatables

我尝试根据if / else语句配置数据表按钮的状态。

数据表按钮对象:

    buttons: [
        {
            text: "button text",
            action: function (e, dt, node, config) {
                button_action();
            },
            enabled: function () {
                if (column_exists) {
                    this.enabled = true
                } else {
                    this.enabled = false
                }
            }
      }
    ]

使用此代码,我的按钮始终处于启用状态。如何根据if / else语句正确设置enabled参数?

2 个答案:

答案 0 :(得分:2)

enabled为真时,您希望column_exists为真,反之亦然。

因此...

buttons: [
    {
        text: "button text",
        action: function (e, dt, node, config) {
            button_action();
        },
        enabled: !!column_exists
    }
]

!!纯粹是一种预防措施。它将任何值转换为布尔值。如果column_exists已经是布尔值,则不需要它。

话虽如此,以下是反模式。

if (somethingBoolean) {
    someValue = true;
} else {
    someValue = false;
}
不要这样做。而只需写:

someValue = somethingBoolean;

或通过双重否定将任何值强制转换为布尔值,如上所示。

someValue = !!anyValue;

答案 1 :(得分:1)

你不想让enabled成为一个函数,而是一个布尔值。

为此,您可以使用IIFE:

{
    enabled: (function () {
        if (column_exists) {
            return true
        } else {
            return false
        }
    }())
//   ^^
}

或者只是不使用if-else-statements而是使用三元运算符:

{
    enabled: column_exists ? true : false
}

在您的情况下也可以简化为

{
    enabled: Boolean(column_exists)
}