如何通过匿名函数为对象属性赋值?

时间:2016-11-14 11:24:37

标签: javascript function object properties eval

假设我有一个带参数的函数。

在这种情况下,我使用matchHeight,但我的问题是一般的。

我将所有选项都设置在这样的变量中。

var options = {
    byRow:    true,
    property: 'height',
    remove:   true,
};

然后将其传递给函数:

$('.some_class').matchHeight(options);

现在,我希望能够使用函数动态评估'remove'属性。我的猜测是使用这样的东西:

var options = {
    byRow:    true,
    property: 'height',
    // remove:   true,
    remove: function(){ return true; }
};

但是,它不起作用。这样做的正确方法是什么? 更新:更清楚。 matchHeight将remove删除为boolean property,而不是函数。

我的主要目标是使用函数“模拟”一个布尔值,例如remove: true

2 个答案:

答案 0 :(得分:2)

如果options.remove是一个函数,那么你必须实际调用它:

options.remove()

如果您想仅使用options.remove来完成此工作,则必须define the property with a getter

var options = {
    byRow:    true,
    property: 'height'
};

Object.defineProperty(options, 'remove', {
    get: function () { return true; }
});

console.log(options.remove);

答案 1 :(得分:1)

您的方法应该有效 - 请参阅此片段:



var options = {
    byRow:    true,
    property: 'height',
    // remove:   true,
    remove: function(){ return true; }
};

function myFunc(options) {
  console.log(options.remove())
}

myFunc(options)