Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erklärung von Javascript Objects_Grundkenntnisse

WBOY
Freigeben: 2016-05-16 16:37:30
Original
1309 Leute haben es durchsucht

Objekt erstellen

•Objektdirektmenge

var o = {
 foo : "bar"
 }
 
Nach dem Login kopieren

•Konstrukteur

var o = new Object();
 
Nach dem Login kopieren

•Prototypische Vererbung

var p = Object.create(o);
 
Nach dem Login kopieren

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
 
Nach dem Login kopieren
Sie können in oder hasOwnProperty verwenden, um festzustellen, ob das Objekt eine Eigenschaft enthält.

Objekteigenschaften

•Objekteigenschaften durchlaufen


Sie können for..in verwenden, um die Eigenschaften eines Objekts
zu durchlaufen

Bei Verwendung von for..in werden die Eigenschaften in der Prototypenkette durchlaufen. Die Durchlaufreihenfolge ist Breitendurchlauf

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

Beschreibbar (beschreibbar) gibt an, ob die Objekteigenschaften beschreibbar sind

Zum Beispiel


var o = {
  foo : 'bar'
}
Object.defineProperty(o, "foo", { writable : false });
o.foo = 'world';
console.log(o.foo);//仍然输出bar
Nach dem Login kopieren
Aufzählbar gibt an, ob die Objekteigenschaften aufzählbar sind

Zum Beispiel

Die Aufzählung von Attributen wie der Länge im Array ist falsch, also

for (p in Array) {
  console.log(p);
}
Nach dem Login kopieren
Nichts ausgeben

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 });

Get stellt die Methode zum Abrufen der Eigenschaften eines Objekts dar

Set stellt eine Methode zum Festlegen von Objekteigenschaften dar

Beispiel


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的值
Nach dem Login kopieren

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.stringify

verwenden

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

Ein ausführbares Objekt kann mit den folgenden Methoden erstellt werden


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
Nach dem Login kopieren
kann als Objekt (mit einer Prototypenkette) oder als direkt aufzurufende Funktion

verwendet werden

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