Ich lese es5 in diesen Tagen und stelle fest, dass das Attribut [[konfigurierbar]] in einigen integrierten Eigenschaften des globalen Objekts auf true festgelegt ist, was bedeutet, dass wir diese Eigenschaften löschen können.
Beispielsweise:
Die Join-Methode des Array.prototype-Objekts verfügt über Attribute
{[[Writable]]:true, [[Enumerable]]: false, [[Configurable]]: true}
So können wir die Join-Methode für Array einfach löschen:
delete Array.prototype.join;
alert([1,2,3].join);
Die Warnung wird undefined
in meinem Chrom 17, Firefox 9, dh 10, sogar ie6 angezeigt;
In Chrome 15 und Safari 5.1.1 ist das Attribut [[konfigurierbar]] auf true festgelegt und das Ergebnis zum Löschen ist ebenfalls true, das Endergebnis ist jedoch weiterhin gültig function(){[native code]}
. Scheint, als wäre dies ein Bug und Chrom behebt ihn.
Das habe ich vorher noch nicht bemerkt. Meiner Meinung nach ist das Löschen von integrierten Funktionen im Code des Benutzers gefährlich und führt zu so vielen Fehlern bei der Arbeit mit anderen. Warum trifft ECMAScript diese Entscheidung?