Kann keine Prototyp-Eigenschaften in der ES6-Klassendefinition definieren
Ich habe ES6-Syntax ausprobiert und festgestellt, dass ich innerhalb der Klassendefinition keine Prototyp- oder Instanzeigenschaft definieren kann. Warum ist dies verboten?
Ich habe @ verwendMyClass.prototype.prop=1
Versuchen Sie es vorher mit ES7 von Babel Compiler (siehe unten). Die Prototypeigenschaft kann immer noch nicht definiert werden.
class MyClass{
prop=1;
static sProp=1;
}
Ich denke nicht, dass die Eigenschaft "Instanz definieren" gefährlich ist. In meinem eigenen Browsergame sind zwei Fälle erforderlich, für die eine Prototyp-Eigenschaft erforderlich ist:
Subclass-Instanzen müssen denselben Eigenschaftswert von der Basisklasse erben:
var Building=function(){...}
Building.prototype.sight=350;
TerranBuilding.CommandCenter=...(CommandCenter extends Building)
TerranBuilding.Barracks=...(Barracks extends Building)
So CommandCenter und Barracks haben beide die gleiche Gebäudeansicht wie 350.
new CommandCenter().sight===new Barracks().sight//All buildings have same sight
Puffereffekt überschreibt die ursprüngliche Eigenschaft und entfernt den Puffer
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
So sollte es meiner Meinung nach eine Möglichkeit geben, Prototypeigenschaften festzulegen, anstatt sie vollständig zu verbieten, oder können Sie einige andere Lösungen angeben, um die obigen 2 Fälle zu behandeln?