Ich weiß, dass es manchmal nützlich ist, um Funktionen andere Funktionen zurückzugeben, so dass Sie nicht wiederholen müssen, Modularität, etc.
Aber was ist der Punkt in diesem Snippet (einer von vielen) hier aus der three.js Bibliothek?Funktion zurückgebende Funktion als Eigenschaft
Object.assign(Matrix4.prototype, {
...
applyToBufferAttribute: function() {
var v1 = new Vector3();
return function applyToBufferAttribute(attribute) {
for (var i = 0, l = attribute.count; i < l; i ++) {
v1.x = attribute.getX(i);
v1.y = attribute.getY(i);
v1.z = attribute.getZ(i);
v1.applyMatrix4(this);
attribute.setXYZ(i, v1.x, v1.y, v1.z);
}
return attribute;
};
}(),
...
});
Die 'inlined' applyToBufferAttribute
erhält nicht anderswo wiederverwendet.
Was ist: '...'? – zer00ne
Könnte einfach ein Entwickler-Stil sein - machen Sie Ihren Code einfach wiederverwendbar/erweiterbar ist eine ziemlich gute Gewohnheit zu sein, weil in der Theorie macht es zukünftige Entwicklung einfacher. – Scoots
Wenn ich dieses Recht lese, wird die 'applyToBufferAttribute' Methode auf die Funktion mit dem gleichen Namen gesetzt. Das einzige Ziel wäre hier, einen Vektor für jede Ausführung dieser Funktion zu erstellen, aber ich überlege warum, sobald der Garbage Collector zurückkommt, sollte er den lokalen Vektor haben, wenn es einen geben sollte. – Dellirium