Допустим, мне нужен объект, который при умножении на два умножается на два и вычитает 1. Синтаксис будет выглядеть так:
var a = {
on_multiply: function(context){
return context*2-1
}
};
alert(2*a);
Это выведет 3. Я не хочу писать "a.on_multiply (2)" Есть ли способ сделать это? Если да, можно ли это сделать и с массивами или матрицами?
Самый простой способ заставить приведенный выше пример работать - это назначить функцию с именем a и использовать контекст в качестве параметра этой функции:
function a(context) {
return (context * 2) - 1;
}
И если вы действительно хотите, чтобы функция была назначена имени:
const a = context => 2 * context - 1;
И приведенное выше в синтаксисе ES5:
const a = functipn(context) {
return (context * 2) - 1;
}
Надеюсь, это поможет!
Это сработало, но есть ли способ написать только «2 * a», а не «a (2)»?
Нет, потому что вы хотите, чтобы 2 было контекстом функции, верно? Это единственный способ передать данные функции, если вы хотите использовать значение переменной.
Я хочу, чтобы 2 было в контексте умножения на.
Итак, нет. Вы должен передаете 2 в качестве параметра a, иначе буквально невозможно получить 2.
Хорошо, тогда я посмотрю, что я могу сделать!
Я попробую!