No se pueden definir propiedades de prototipo dentro de la definición de clase ES6
Intenté la sintaxis de ES6 y descubrí que no puedo definir la propiedad del prototipo o la propiedad de la instancia dentro de la definición de clase, ¿por qué lo prohíbe?
Yo estaba usandoMyClass.prototype.prop=1
antes, intente ES7 con el compilador de babel como se muestra a continuación, todavía no puede definir la propiedad del prototipo.
class MyClass{
prop=1;
static sProp=1;
}
No creo que la propiedad de instancia de definición sea peligrosa, hay 2 casos en mi propio juego de navegador que necesitan propiedad de prototipo:
Las instancias de subclase deben heredar el mismo valor de propiedad de la clase base:
var Building=function(){...}
Building.prototype.sight=350;
TerranBuilding.CommandCenter=...(CommandCenter extends Building)
TerranBuilding.Barracks=...(Barracks extends Building)
Entonces CommandCenter y Barracks tendrán la misma vista de construcción que 350.
new CommandCenter().sight===new Barracks().sight//All buildings have same sight
El efecto del buffer anula la propiedad original y elimina el 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
Entonces, creo que debería agregar una forma de establecer la propiedad del prototipo en lugar de prohibirla por completo, ¿o puede dar algunas otras soluciones para tratar los 2 casos anteriores?