Heim > Web-Frontend > js-Tutorial > Hauptteil

Unter welchen Umständen sollte Javascript keine aufzählbaren Eigenschaften zu Object.prototype hinzufügen?

伊谢尔伦
Freigeben: 2017-07-26 17:03:17
Original
1421 Leute haben es durchsucht

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; 
};
Nach dem Login kopieren

Das Ergebnis ist jedoch wie folgt:


({ a: 1, b: 2, c: 3}).allKeys(); // ["allKeys", "a", "b","c"]
Nach dem Login kopieren

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; 
}
Nach dem Login kopieren

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 
});
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!