Как умножать объекты по заданным правилам?

Допустим, мне нужен объект, который при умножении на два умножается на два и вычитает 1. Синтаксис будет выглядеть так:

var a = {
    on_multiply: function(context){
        return context*2-1
    }
};
alert(2*a);

Это выведет 3. Я не хочу писать "a.on_multiply (2)" Есть ли способ сделать это? Если да, можно ли это сделать и с массивами или матрицами?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Самый простой способ заставить приведенный выше пример работать - это назначить функцию с именем a и использовать контекст в качестве параметра этой функции:

function a(context) {
    return (context * 2) - 1;
}

И если вы действительно хотите, чтобы функция была назначена имени:

const a = context => 2 * context - 1;

И приведенное выше в синтаксисе ES5:

const a = functipn(context) {
    return (context * 2) - 1;
}

Надеюсь, это поможет!

Я попробую!

Samuel Garbergs 6 18.12.2018 11:57

Это сработало, но есть ли способ написать только «2 * a», а не «a (2)»?

Samuel Garbergs 6 18.12.2018 12:03

Нет, потому что вы хотите, чтобы 2 было контекстом функции, верно? Это единственный способ передать данные функции, если вы хотите использовать значение переменной.

Jack Bashford 18.12.2018 12:13

Я хочу, чтобы 2 было в контексте умножения на.

Samuel Garbergs 6 18.12.2018 12:19

Итак, нет. Вы должен передаете 2 в качестве параметра a, иначе буквально невозможно получить 2.

Jack Bashford 18.12.2018 12:22

Хорошо, тогда я посмотрю, что я могу сделать!

Samuel Garbergs 6 18.12.2018 12:23

Другие вопросы по теме