@Gagatyn
Самоучка

Как поместить объект в функцию и работать с ним?

Написать функцию 'op', которая имеет один параметр - 'fNum'
'fNum' - это число, с которым будут производиться действия. Функция 'op' должна возвращать объект, у которого должно быть несколько функций. Исправте меня.
function op(fNum) {
	var myCalc;
	return myCalc = {
		sum: function() {
			for(var i=0; i<arguments.length; i++){
				fNum +=arguments[i];
			}
			// console.log(fNum);
			return fNum;
		},
		dif: function() {
			for(var i=0; i<arguments.length; i++){
				fNum -=arguments[i];
			}
			return fNum;
		},
		div: function() {
			for(var i=0; i<arguments.length; i++){
				fNum /=arguments[i];
			}
			return fNum;
		},
		mul: function() {
			for(var i=0; i<arguments.length; i++){
				fNum *=arguments[i];
			}
			return fNum;
		}
	}
}

var calc = op(100);

console.log( op.sum(1,2,3) );
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
qpPeW
@qpPeW
Не люблю рутинную работу...
var calc = op(100);
console.log( op.sum(1,2,3) );

Может не op.sum(1,2,3), а calc.sum(1,2,3)...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
devellopah
@devellopah
я тут немного пофантазировал...
function isNum(pretendent) {
	return typeof pretendent === "number" && !Number.isNaN(pretendent);
}

function validate(list) {
	if( list.every( (item) => isNum(item) ) ) {
		return true;
	}
	console.log('All provided arguments should be numbers!');
	return false;
}

const operations = {
	addTwo: (a, b) => a + b,
	substractTwo: (a, b) => a - b,
	divideTwo: (a, b) => a / b,
	multiplyTwo: (a, b) => a * b
};

function take(fNum) {
	if ( !isNum(fNum) )  {
		console.log('You are supposed to provide number!');
		return;
	}
	return {
		add: (...args) => validate(args) && args.reduce(operations.addTwo, fNum),
		substract: (...args) => validate(args) && args.reduce(operations.substractTwo, fNum),
		divide: (...args) => validate(args) && args.reduce(operations.divideTwo, fNum),
		multiply: (...args) => validate(args) && args.reduce(operations.multiplyTwo, fNum)
	};
}


https://repl.it/ID7B
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект