Objekt
Objekte können in zwei Formen definiert werden: Deklarationsformular und Konstruktionsformular
Deklarative formale Syntax: var myObj = {key:value}
Konstruktive formale Syntax: var myObj = new Object(); myObj.key = value;
Typ: Es gibt sechs Sprachtypen : Zeichenfolgennummer boolean null undefiniertes Objekt
Eingebautes Objekt: String Nummer Boolean Objekt Funktion Array Datum RegExp Fehler
var myObject = {
a:2
}
myObject.a; //2 Eigenschaftenzugriff
myObject["a"] // 2 Schlüsselzugriff
ES6 Berechenbarer Eigenschaftsname
var prefix = "foo";
var myObject = {
[prefix + "bar"] : "hello",
[prefix + "baz"]: "world"
};
myObject["foobar"]; // hello
myObject["foobaz"]; 🎜 >
1.writableBestimmen Sie, ob der Wert der Eigenschaft geändert werden kann
var myObject = {};Object.defineProperty(myObject,"a ",{Wert:2,
beschreibbar:false, //Nicht beschreibbar!
configurable: true,enumerable: true});myObject.a = 3;myObject. a; // 22. konfigurierbarSolange die Eigenschaft konfigurierbar ist, können Sie die Methode defineProperty(..) verwenden Beschreibungseigenschaft.
var myObject = {a : 2};myObject.a = 3;myObject. a; // 3Object.defineProperty(myObject,"a",{value: 4,
beschreibbar:true,konfigurierbar:false,//Nicht konfigurierbar
aufzählbar: ture});myObject.a; // 4myObject.a = 5;myObject.a; // 5Object.defineProperty(myObject,"a ",{Wert: 6,
beschreibbar:wahr,konfigurierbar:wahr ,enumerable: ture}) // TypeErrorkonfigurierbarwird geändert in Flash ist eins- kann übrigens nicht rückgängig gemacht werden.
deletewird nur zum Löschen der löschbaren Attribute des Objekts verwendet.
var myObject = {a:2
};
myObject.a //2delete myObject.a;myObject.a // undefiniert3.enumerablesteuert, ob die Eigenschaft vorhanden ist Erscheint in der Eigenschaftenaufzählung des Objekts.
1.Objektkonstante, kombinieren Sie beschreibbar: false und konfigurierbar: false , um eine echte Konstante zu erstellen Eigenschaften
(kann nicht geändert, neu definiert oder gelöscht werden).
var myObject = {};
Object.defineProperty(myObject,"FAVORITE_NUMBER",{
value:42 ,
beschreibbar: falsch,
konfigurierbar: falsch
})
2.Verlängerung verbieten
Um zu verhindern, dass ein Objekt neue Attribute hinzufügt und vorhandene Attribute beibehält, können Sie Object.preventExtensions(...)
var myObject = {
a:2};Object.preventExtensions(myObject);myObject.b = 3;myObject.a ; / / undefiniert3.Seal
Object.seal(...)erstellt ein " Erhaltenes Objekt ", diese Methode ruft tatsächlich
Object.preventExtensions(...)für ein vorhandenes Objekt auf und markiert alle Eigenschaften als configurable:false.
4.Freeze
Object.freeze(...)Ein eingefrorenes Objekt wird erstellt. Diese Methode ruft tatsächlich
Object.seal(...) für ein vorhandenes Objekt auf.kann ein Objekt auch tief einfrieren.
Getterund Setter
var myObject = {//Givesa Definieren Sie einen Getter
get a() {return 2;}}myObject.a = 3;myObject.a; // 2Da nur ein definiert ist Der Getter,, also beim Festlegen des Werts von a , der Satz Der Vorgang ignoriert Zuweisungsvorgänge und löst keinen Fehler aus.
Im Allgemeinen erscheinen Getter und Setter paarweise
var myObject = {//Definiert einen Getterget a( ) {return this._a_;
},//definiere einen
einen
>Setterset a (val) {this._a_ = val * 2;}
};
myObject.a = 2;
myObject.a; // 2
ExistenzSie können feststellen, ob dieses Attribut im Objekt vorhanden ist, ohne auf das Attribut zuzugreifen:
var myObject = {
a:2
};
("a" in myObject); // true
("b" in myObject) ; // false
myObject.hasOWnProper("a"); // true
myObject.hasOwnProperty("b"); // false
in Die Der Operator prüft, ob die Eigenschaft im Objekt und in der [[Prototype]]-Prototypkette vorhanden ist.
hasOwnProperty(...) prüft nur, ob sich die Eigenschaft im myObject-Objekt befindet.
Bestimmen Sie, ob die Eigenschaft aufzählbar ist:
var myObject = {};
Object.defineProperty(
myObject,
"a",
// Machen Sie a aufzählbar wie eine normale Eigenschaft
{enumerable: true,value:2}
);
Object.defineProperty(
myObject,
"b",
// Seib nicht aufzählbar
{enumerable: false,value:3}
)
myObject.propertyIsEnumberable("a"); // true
myObject.propertyIsEnumber("b"); // false
Object.keys(myObject); "a"]
Object.getOwnPropertyName(myObject); // ["a",b"]
propertyIsEnumerable(...) prüft die angegebene Eigenschaft name existiert direkt im Objekt ( statt in der Prototypenkette) und erfüllt enumerable:true
Object.keys(...) gibt ein Array mit zurück alle aufzählbaren Eigenschaften
Object.getOwnPropertyNames(...) Gibt ein Array zurück, das alle Eigenschaften enthält, ob aufzählbar oder nicht
Traverse
for .. in Kann verwendet werden, um über die aufzählbare Eigenschaftsliste eines Objekts zu iterieren
for Für numerisch indizierte Arrays, Sie können die standardmäßige for -Schleife
ES5 s neu hinzugefügte forEach(..) every(. ..) some( verwenden. .)
forEach(...) durchläuft alle Werte im Array und ignoriert den Rückgabewert der Rückruffunktion.
every(...) wird ausgeführt, bis die Rückruffunktion false
some(...) zurückgibt Es wird ausgeführt, bis die Rückruffunktion true
Es6 zurückgibt für .. von Schleifensyntax
var myArray = [ 1,2,3];
for(var v of myArray){
console.log(v)
}
Gewöhnliche Objekte haben keinen @@iterator, kann für jedes Objekt angepasst werden, das Sie durchlaufen möchten
var myObject = {
a:2,
b:3
};
Object.defineProperty(myObject,Symbol.iterator,{
enumerable: false ,
beschreibbar: falsch,
konfigurierbar: wahr,
Wert: function() {
var o = this;
var idx = 0;
var ks = Object.keys(o);
return {
next: function(){
value: o[ks[idx++]],
fertig:(idx > ks.length)
}
}
}
})
// 手动遍历myObject
var it = myObject[Symbol.iterator]();
it.next(); // {value:2,done: false}
it.next(); // {value:3,done: false}
it.next(); // {undefiniert,done: true}
// 用 for..of 遍历myObject
for(var v of myObject){
console.log(v)
} // 2 // 3
Das obige ist der detaillierte Inhalt vonGemeinsames Wissen über JavaScript-Beispiele teilen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!