Heim  >  Artikel  >  Web-Frontend  >  JavaScript erkennt Instanzattribute und Prototypattribute._javascript-Tipps

JavaScript erkennt Instanzattribute und Prototypattribute._javascript-Tipps

WBOY
WBOYOriginal
2016-05-16 16:16:021034Durchsuche

0. Voraussetzung

Die Eigenschaften von JavaScript-Objekten sind in zwei Existenzformen unterteilt: Eine befindet sich in der Instanz und die andere befindet sich im Prototypobjekt.

Dem oben Gesagten zufolge treten bei der Erkennung von Attributen 4 Situationen auf

Existiert nicht im Instanz- oder Prototypobjekt
Existiert in der Instanz, existiert nicht im Prototypobjekt
Existiert nicht in der Instanz, existiert im Prototypobjekt
Es existiert sowohl in der Instanz als auch im Prototypobjekt

1.hasOwnPrototype()

hasOwnPrototype() akzeptiert einen Eigenschaftsnamen im String-Format und gibt „true“ zurück, wenn die Eigenschaft in der Instanz selbst vorhanden ist (Fall 2/Fall 3).

Code kopieren Der Code lautet wie folgt:

functino Person() {}
Person.prototype.name = 'apple';
var person1 = neue Person();
var person2 = neue Person();
person1.name = 'Banane';
console.log(person1.hasOwnPrototype(name)); //true
console.log(person2.hasOwnPrototype(name)); //false

2.in-Operator

Der

in-Operator gibt „true“ zurück (Fall 2/Fall 3/Fall 4), unabhängig davon, ob das Attribut in der Instanz selbst oder im Prototypobjekt vorhanden ist; andernfalls wird „false“ zurückgegeben (Fall 1).

Code kopieren Der Code lautet wie folgt:

console.log('name' in person1); //true
console.log('name' in person2); //true

3. Erkennen Sie das Vorhandensein von Prototypattributen

In Kombination mit dem in-Operator und hasOwnProperty() können Sie eine Funktion anpassen, um zu erkennen, ob eine bestimmte Eigenschaft im Prototyp vorhanden ist.

Code kopieren Der Code lautet wie folgt:

Funktion hasPrototypeProperty(object, name) {
Rückgabe !object.hasOwnPrototype(name) && (name in object);
}
console.log(hasPrototypeProperty(person1, 'name')); //false
console.log(hasPrototypeProperty(person2, 'name')); //true

Wenn das angegebene Attribut im Prototyp vorhanden ist, geben Sie „true“ zurück (Fall 3). Andernfalls geben Sie „false“ zurück (Fall 1/Fall 2/Fall 4).

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er gefällt euch allen

Stellungnahme:
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