Плагин Typescript или babel для преобразования класса ES6 для работы с переменными с ограниченной областью действия, действующими как шаблон частных свойств - PullRequest
1 голос
/ 29 мая 2020

Предпосылки: Не так давно go функции с переменными с ограниченной областью действия, действующими как частные свойства или методы, были чрезвычайно эффективным способом создания классов в JavaScript. Сегодняшние стандарты заключаются в использовании более подробного и неэффективного подхода к размеру файла с использованием prototype и ключевого слова this. Кроме того, современный подход менее гибкий. В коде:

class MyClass { 
  private myProp = "hello "; // or #myProp with new proposed syntax
  private myProp2 = "World"; // or #myProp2 with new proposed syntax

  print() {
    console.log(this.myProp + this.myProp2);
  }
}

в:

function MyClass() {
  var self = this,
      myProp = "hello ",
      myProp2 = "World";

  self.print = function() {
    console.log(myProp + myProp2);
  }
}

Есть предложения?

Примечание : я знаю, как JavaScript прототип работает, и что второй подход не использует его. Весь смысл этого вопроса состоит в том, чтобы найти альтернативу транспиляции шаблону прототипа, как показано выше, которое на 100% достоверно и эквивалентно типичным вариантам использования классов. Т.е. myClass.print();.

Обновление 2 : Для тех, кто думает о занимаемой памяти, они правы. Производительность движка JavaScript не является проблемой, так как устаревшие и современные движки учитывают этот подход.

Обновление 3 : Кроме того, этот шаблон может предлагать наследование классов, public / private stati c методы, и он полностью совместим с оператором instanceof в базовом классе и родительских классах.

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