Показать сообщение отдельно
  #14 (permalink)  
Старый 19.08.2015, 22:50
Аватар для armidoll
Кандидат Javascript-наук
Отправить личное сообщение для armidoll Посмотреть профиль Найти все сообщения от armidoll
 
Регистрация: 28.05.2015
Сообщений: 116

Как поручить js самому создать функцию?
Есть форма:
<form id="filter">
...
<input id="area-01" type="checkbox" name="area" value="100">100
...
</form>

Есть массив для фильтров
var filters = []

Есть обработчик событий, который слушает <form:"filter">. Пусть его часть выглядит так:
var firedEl = event.target;
var property = firedEl.name;
var value = firedEl.value;

Нужно чтобы js сгенерировал функцию используя текущие значения переменных property и value. Сама функция хранится в массиве filters[] и для нашего примера должна выглядеть так:
function(el) {
  return el["area"] == 100
}

Как будет выглядеть js код, создающий такую функцию?
Он должен быть универсальным и работать для любых допустимых значений property и value.

Добавлено:
Сделал пока так:
Catalog.prototype.addFilter = function(property, value) {	

var funcBody = "return el[" + property + "] == " + value + " ;" ;
var func = new Function ("el", funcBody);

this._filters.push(func);		
};


А почему не получилось так?:
Catalog.prototype.addFilter = function(property, value) {
		
function makeFilter(prop, val) {
	return function(el) {
		return el[prop] == val;
	        };
	}

	var func = makeFilter(property, value);		

	this._filters.push(func);		
}

Последний раз редактировалось armidoll, 19.08.2015 в 23:23. Причина: Нашел вариант
Ответить с цитированием