2016-11-14 4 views
1

Предположим, у меня есть функция, которая принимает параметры.Как присвоить значение объекту через анонимную функцию?

В этом случае я использую matchHeight, но мой вопрос является общим.

Я установил все параметры в переменной, подобной этой.

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

А затем передать его функции:

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

Теперь, я хотел бы быть в состоянии оценить свойство «удалить» динамически с помощью функции. Я предполагал использовать что-то вроде этого:

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

Но это не работает. Каков правильный способ сделать это? ОБНОВЛЕНИЕ: чтобы быть более понятным. matchHeight снимает как boolean property, а не как функцию.

Мой основной объект - «эмулировать» логическое значение, например remove: true, используя функцию.

+0

Что вы имеете в виду * не работает *? Этот объект примерно правильный. Это зависит от того, как он потребляется в 'matchHeight', хотя вы не показывали этот код. Если это не ваш код, вы не можете поменять логическое значение для такого функционала. 'options.remove' vs' options.remove() ', они вызываются по-другому – Liam

+0

' options ["remove"] '? – guest271314

+0

matchHeight принимает remove как [boolean property] (https://github.com/liabru/jquery-match-height#usage) – Sebastian

ответ

1

Ваш подход должен работать - пожалуйста, смотрите этот фрагмент:

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

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

 
myFunc(options)

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);

+0

Спасибо. Нет, 'remove' является [boolean property] (https://github.com/liabru/jquery-match-height#usage) К сожалению, ваш код не работает – Sebastian

+0

Uhm ... define" not working ". Когда вы нажимаете «запускать фрагмент кода» над ним, очень много * работает *. – deceze

Смежные вопросы