Возможно ли реализовать равный оператор в ES6? - PullRequest
3 голосов
/ 01 мая 2020

Возможно ли реализовать оператор равенства в ES6?

Вместо реализации метода equals() в классе было бы неплохо использовать if (myClassObject1 === myClassObject2) {}

Можем ли мы реализовать пользовательские математические операторы в es6 javascript классах?

В c# его можно переопределить следующим образом

public static bool operator ==(Complex x, Complex y)
{
   return x.re == y.re && x.im == y.im;
}

public static bool operator !=(Complex x, Complex y)
{
   return !(x == y);
}

1 Ответ

9 голосов
/ 01 мая 2020

Нет, вы не можете этого сделать.

Операторы == и === объяснены здесь , и программист не может их изменить.

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

const a = { name: 'Alireza' };
const b = { name: 'Alireza' };

_.isEqual(a, b); // true

, Брендан Айх обсуждает добавление «Объектов значения» здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...