Objekt erstellen
•Objektdirektmenge
var o = { foo : "bar" }
•Konstrukteur
var o = new Object();
•Prototypische Vererbung
var p = Object.create(o);
Klassenvererbung
Javascript-Objekte haben ihre eigenen Eigenschaften und geerbten Eigenschaften.
•Wenn Sie das Attribut x von Objekt o abfragen, suchen Sie zunächst nach dem Attribut x in o. Wenn es nicht gefunden wird, suchen Sie nach dem x-Attribut im Prototypobjekt von o, bis x oder ein Objekt gefunden wird, dessen Prototyp null ist
•Wenn Sie dem x-Attribut des Objekts o einen Wert zuweisen und o bereits ein eigenes Attribut x hat, ändern Sie den Wert von x. Wenn das Attribut x in o nicht vorhanden ist, erstellen Sie ein x-Attribut für o und weisen Sie es zu ein Wert•Mit anderen Worten: Die Prototypenkette funktioniert nur bei Abfragen.
var O = { x : 1 }; function P() { this.y = 2; } P.prototype = O; var t = new P(); console.log(t); console.log('x' in t);//true console.log(t.hasOwnProperty('x'));//false
Objekteigenschaften
•Objekteigenschaften durchlaufen
Sie können for..in verwenden, um die Eigenschaften eines Objekts
zu durchlaufen
Mit hasOwnProperty können Sie also feststellen, ob es sich um die eigene Eigenschaft des Objekts handelt.
•Eigenschaften von Objektattributen
Verwenden Sie Object.getOwnPropertyDescriptor(), um den Deskriptor einer bestimmten Eigenschaft eines Objekts abzurufen
Zum Beispiel
var o = { foo : 'bar' } Object.defineProperty(o, "foo", { writable : false }); o.foo = 'world'; console.log(o.foo);//仍然输出bar
Zum Beispiel
Die Aufzählung von Attributen wie der Länge im Array ist falsch, also
for (p in Array) { console.log(p); }
Konfigurierbarkeit (konfigurierbar) gibt die Konfigurierbarkeit und Aufzählbarkeit von Eigenschaften an, die geändert werden können
Diese Konfigurationseigenschaften können mit Object.defineProperties definiert werden.
Object.defineProperty(o, "foo", { writable : false });
Set stellt eine Methode zum Festlegen von Objekteigenschaften dar
var book = { _year: 2004, edition: 1 }; Object.defineProperty(book, "year", { get: function () { console.log('get year'); return this._year; }, set: function (newValue) { console.log('set year'); if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } }); book.year = 2005;//控制台输出‘set year' console.log(book.year);//控制台输出‘get year'和year的值
Objektmethoden
toString konvertiert das Objekt in einen String. Die Standardkonvertierung ist etwa [object Object], wenn Sie es also in das JSON-Format konvertieren müssen, können Sie JSON.stringifyverwenden
valueOf wird verwendet, wenn Objekte in andere Typen konvertiert werden müssen. Auch hier gibt es zur Standardkonvertierung nicht viel zu sagen.
Ausführbares Objekt
function bar(o) { var f = function() { return "Hello World!"; } o.__proto__ = f.__proto__; f.__proto__ = o; return f; } var o = { x: 5 }; var foo = bar(o); console.log(foo()); console.log(foo.x); console.log(typeof foo);//function
verwendet werden