delete bedeutet, ein Attribut des Objekts zu löschen.
var obj = {key:5};
delete obj.key bedeutet, das Schlüsselattribut des Objekts zu löschen Es ist kein Problem, aber wenn das Objekt Es ist erwähnenswert, dass dieses Attribut auch im Prototypobjekt vorhanden ist.
var A = function(){}; A.prototype.testMe = true; var a = new A(); //覆盖原型属性 a.testMe = true; if(a.testMe){ // 一些关键代码... // .... //删除这属性 delete a.testMe; } //第二段 --------------------------- // 在其它模块中 if(a.testMe){ // 一些关键代码... // .... }
Der zweite Absatz ist erwähnenswert. Denken Sie nicht, dass testMe in a nicht mehr existiert, wenn es gelöscht wird, also ist a.testMe undefiniert, was tatsächlich falsch ist durch Prototypenzugriff. Ja, es stimmt immer noch!
Ich wurde hier ohne Aufmerksamkeit ausgetrickst.
//Anhang:
Erkennen, ob ein Objekt ein bestimmtes Attribut hat, einschließlich der Prototypenkette:
if ('attrName' in obj)...
Erkennen, ob ein Objekt zu einem bestimmten Attribut gehört zum Objekt selbst und zur Nicht-Prototyp-Kette:
obj.hasOwnProperty('attrName')
Weitere Artikel zur Verwendung von JavaScript-Löschattributen finden Sie auf der chinesischen PHP-Website!