Fügen Sie niemals aufzählbare Eigenschaften zu Object.prototype hinzu.
Wenn Ihr Code auf einer for..in-Schleife basiert, um die Eigenschaften des Objekttyps zu durchlaufen, fügen Sie keine aufzählbaren Eigenschaften hinzu Eigenschaften zu Object.prototype.
Bei der Erweiterung der JavaScript-Ausführungsumgebung ist es jedoch häufig erforderlich, dem Object.prototype-Objekt neue Eigenschaften oder Methoden hinzuzufügen. Sie können beispielsweise eine Methode hinzufügen, um alle Attributnamen in einem Objekt abzurufen:
Object.prototype.allKeys = function() { var result = []; for (var key in this) { result.push(key); } return result; };
Das Ergebnis ist jedoch wie folgt:
({ a: 1, b: 2, c: 3}).allKeys(); // ["allKeys", "a", "b","c"]
Eine mögliche Lösung besteht darin, Funktionen zu verwenden, anstatt neue Methoden auf Object.prototype zu definieren:
function allKeys(obj) { var result = []; for (var key in obj) { result.push(key); } return result; }
Aber wenn Sie wirklich Wenn Sie Object.prototype eine neue Eigenschaft hinzufügen müssen und nicht möchten, dass die Eigenschaft in der for..in-Schleife durchlaufen wird, können Sie die von der ES5-Umgebung bereitgestellte Object.defineProject-Methode verwenden:
Object.defineProperty(Object.prototype, "allKeys", { value: function() { var result = []; for (var key in this) { result.push(key); } return result; }, writable: true, enumerable: false, configurable: true });
Der Schlüsselteil des obigen Codes besteht darin, das aufzählbare Attribut auf „false“ zu setzen. In diesem Fall kann die Eigenschaft nicht in der for..in-Schleife durchlaufen werden.
Das obige ist der detaillierte Inhalt vonUnter welchen Umständen sollte Javascript keine aufzählbaren Eigenschaften zu Object.prototype hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!