Получить значение строки перед прототипом - PullRequest
0 голосов
/ 07 мая 2020

Сейчас у меня есть String.protype с именем isColor, который проверяет цвет. Но я не хочу, чтобы у него был аргумент внутри функции.

Я хочу заархивировать что-то вроде этого:

const color = 'red';

console.log(color.isColor());

ожидаемый результат: true

1 Ответ

1 голос
/ 07 мая 2020

Внутри метода сравните this (экземпляр) с тем, с чем вы его сравниваете:

String.prototype.isColor = function() {
  return ['red', 'orange', 'yellow'].includes(String(this));
}
console.log('red'.isColor());
console.log('somethingElse'.isColor());

Вам понадобится String для преобразования this, если вы запускаете скрипт в небрежном режиме, и в этом случае this будет строковым объектом , а не строка примитив , поэтому вам нужно превратить его в примитив перед сравнением.

Но имейте в виду, что изменение встроенных прототипов - это очень плохая практика - вам следует настоятельно рассмотреть возможность использования другого подхода, если это вообще возможно.

...