Não é possível definir propriedades do protótipo na definição de classe ES6
Eu estava tentando a sintaxe do ES6 e descobri que não posso definir a propriedade prototype ou a propriedade de instância na definição de classe. Por que a proíbe?
Eu estava usandoMyClass.prototype.prop=1
antes, tente o ES7 pelo compilador babel como abaixo, ainda não é possível definir a propriedade prototype.
class MyClass{
prop=1;
static sProp=1;
}
Eu não acho que definir propriedade de instância seja perigoso, há 2 casos em meu próprio jogo de navegador que precisam de propriedade de protótipo:
As instâncias da subclasse precisam herdar o mesmo valor da propriedade da classe base:
var Building=function(){...}
Building.prototype.sight=350;
TerranBuilding.CommandCenter=...(CommandCenter extends Building)
TerranBuilding.Barracks=...(Barracks extends Building)
Portanto, o CommandCenter e o Barracks terão a mesma visão de construção que o 350.
new CommandCenter().sight===new Barracks().sight//All buildings have same sight
O efeito do buffer substitui a propriedade original e remove o buffer
Marine.prototype.speed=20
var unit=new Marine()
unit.speed===20//get unit.__proto__.speed 20
unit.speed=5//Buffer:slow down speed, unit.speed will override unit.__proto__.speed
delete unit.speed//Remove buffer
unit.speed===20//true, speed restore
Então, acho que deve adicionar uma maneira de definir a propriedade prototype em vez de proibi-la completamente, ou você pode dar outras soluções para lidar com os casos acima de 2?