Мне ударило, что было бы неплохо иметь некоторую форму Bytestring в JavaScript, используя Textencoder
Но вместо того, чтобы иметь какое-то необычное новообразование и пройти через пару обручей, чтобы сделать то, что нельзя было обрабатываться как нить, что если пользователь мог просто сделать это.
b`hello world`;
И вот что основана идея на байтовой строке ржавчины.
b"hello rustations";
Версия JavaScript примет форму мечечной функции для шаблона литерала, который охлаждается сам по себе, это никогда не приходило к тому, что мы могли бы сделать такие типы примитивных роликов PSUDO. Хорошо, что бы вернуть строку байта? Теоретически это должно вернуть UINT8Array Unicode UniCode UTF8, закодированных байта, это все готово. Но что, если я хочу объединить их?
JavaScript официально не предлагает возможность изменить то, что +
Делает, но пара языков делает, это известно как перегрузка оператора, изменив поведение оораторов на то, что у вас есть. Поэтому, если я хочу сделать:
b`hello` + b`world` // TypedArray + TypedArray 😵
К сожалению, хотя это возможно, это означает, что я должен означать, что я должен предоставить возвращаемое значение как часть API, помнить результат этой строковой записи не является строкой, это Uint8Array, вы не можете добавить 2 TypedArrays вместе, поэтому версия API может быть Вид полезной, куча методов на моем типе заставит его чувствовать себя чуть более родным.
Вот как это сделано:
function b(str) { const _value = str[0]; return { _value, toUtf8Bytes() { return new TextEncoder().encode(_value) }, valueOf() { // When the interpreter asks for the value of this object we give it the original string. return _value; } } }
ценность
Переоценивает метод, используемый интерпретатором для вычисления и отображения значений в консоли и т. Д., Что касается JavaScript, это обычная строка, что означает, что в любое время я использую любой оператор, значение
будет называться как сеттер добыча. В моем примере на самом деле это как я добавляю 2 объекта вместе, но обманывая переводчика, думая, что это строка. Не волнуйтесь, если это безопасно, все – это объект в JavaScript в любом случае, это не так странно. Что будет работать еще лучше, будет экземпляр класса ES6 Bytestring Extring String, Во всяком случае, я нашел это абсолютно увлекательно и может быть невероятной техникой, я надеюсь, что вы тоже что-то узнали.
Но почему?
Обратите внимание, вы можете использовать синтаксис интерполяции с этим (с некоторыми изменениями относительно того, как вы поставите кусочки обратно вместе) и передайте это на WebGL или WASM очень легко.
Если байтовые строки не ваша вещь, как насчет вектором экземпляра класса, вы могли бы просто добавить вместе или абстракцию единиц CSSOM, я могу подумать о многих классных использования для этого ahem. взломать
Оригинал: “https://dev.to/adam_cyclones/oporator-overloading-in-javascript-292f”