1
Ich habe ein Problem mit Klassen in es6. Ich brauche jedes Mal, wenn ich Objekte erstelle, einen automatischen Inkrement-ID-Wert. Wirklich verstehe nicht, wie ich Variable deklarieren, Wert _id zuweisen und dann inkrementieren Variable erhöhen kann.Wie Auto ID-Wert mit es6 js Klassennotation Autoincrement?
class Rectangle {
constructor(name,width,height,x,y) {
if (typeof(name) === 'string' && typeof(width,height,x,y) === 'number') {
this._id = ?;
this._name = name;
this._width = width;
this._height = height;
this._x = x;
this._y = y;
var div = document.createElement("div");
document.body.appendChild(div);
div.id = this._id;
div.style.width = this._width + "px";
div.style.height = this._height + "px";
div.style.backgroundColor = "#ededed";
div.innerHTML = name;
}
else {
alert("No way!");
return false;
}
}
moveObj(dx,dy) {
this._x = this._x + dx
this._y = this._y + dy
console.log(this._x,this._y)
return this;
}
getCoords() {
let x = this._x;
let y = this._y;
return [x,y];
}
}
Danke Xerxes! Es funktioniert, aber ich habe ein Problem, dass Generator erzeugt _id = 1 zweimal oO – Alex
ich gefunden Lösung: (! This.latestId) statische incrementId() { \t wenn { \t \t this.latestId = 1; \t} \t sonst this.latestId ++; \t Rückgabe this.latestId; } – Alex
@Alex Ich aktualisierte meine Antwort, um das Problem zu reflektieren, das Sie gefunden haben. Das Problem war, dass "i ++" anstelle von "++ i" zurückgegeben wird, da sie die Zuweisung anders festlegen. Einer nach dem Ausdruck endet und der andere vor. Wenn meine Antwort half, erwäge es als richtig zu markieren :) – XerxesNoble