Heim  >  Artikel  >  Web-Frontend  >  Was sind JavaScript-Objekte? Ausführliche Erklärung zum Erstellen von Objektcode

Was sind JavaScript-Objekte? Ausführliche Erklärung zum Erstellen von Objektcode

伊谢尔伦
伊谢尔伦Original
2017-07-24 15:36:361310Durchsuche

Was ist ein Objekt?

Nach der Definition von JavaScript ist ein Objekt eine Sammlung ungeordneter Eigenschaften, und seine Eigenschaften können Grundwerte, Objekte oder Funktionen enthalten. Das heißt, ein Objekt ist ein Satz von Attributen in keiner bestimmten Reihenfolge. Jedes Attribut wird einem Wert zugeordnet, der ein Satz von Schlüssel-Wert-Paaren ist. Der Wert kann Daten oder ein Objekt sein.

Das einfachste Objekt
Ein Paar geschweifte Klammern {} in JavaScript kann ein Objekt definieren. Diese Schreibweise ist eigentlich dieselbe wie der Aufruf des Konstruktors von Object

var obj={};
var obj2=new Object();

Konstruiert So enthält das ausgegebene Objekt nur einen Zeiger auf den Prototyp des Objekts. Sie können einige Methoden wie valueOf und hasQwnProperty verwenden, die jedoch nur geringe praktische Auswirkungen haben.

var obj={};
            obj.a=0;
            obj.fn=function(){
                alert(this);
            }
            var obj2={
                a:0,
                fn:function(){
                    alert(this);
                }
            }

Sie können Eigenschaften und Methoden hinzufügen, nachdem Sie das Objekt definiert haben, oder Sie können die literale Zuweisungsmethode verwenden, um Eigenschaften und Methoden hinzuzufügen, wenn Sie das Objekt definieren Auf diese Weise können seine Methoden und Eigenschaften Objektreferenzen direkt verwenden, ähnlich wie statische Variablen und statische Funktionen einer Klasse. Es gibt einen offensichtlichen Fehler bei der Erstellung von Objekten auf diese Weise: Es ist sehr mühsam, eine große Anzahl von Objekten zu definieren Es ist notwendig, sich fast wiederholenden Code immer wieder zu schreiben.

Es ist Zeit, dass die Funktion wieder angezeigt wird. Beim Erstellen eines Objekts können Sie die obige createObj-Methode verwerfen und die Funktion direkt als Objekt verwenden Funktion als Objekt. Die Besonderheit des Objekts.

1. Die Funktion kann Parameter akzeptieren und basierend auf den Parametern Objekte desselben Typs mit unterschiedlichen Werten erstellen.

2. Wenn die Funktion als Konstruktor verwendet wird (aufgerufen durch die neue Operator) wird ein Objekt zurückgegeben. In der armen und unteren Bauernversion von jQuery wurden einige grundlegende Kenntnisse über Konstruktoren erwähnt. Der Rückgabewert des Konstruktors ist in zwei Teile unterteilt Situationen, in denen die Funktion keine Return-Anweisung hat oder einen Basistyp (bool, int, string, undefiniert, null) zurückgibt, gibt ein von new erstelltes anonymes Objekt zurück, bei dem es sich um die Funktionsinstanz handelt, wenn der Funktionskörper ein Referenztypobjekt zurückgibt. Array, Funktion, Objekt usw.) Das Objekt überschreibt bei der Erstellung eines neuen Objekts ein anonymes Objekt als Rückgabewert.

3 Wie kann man also das Typidentifikationsproblem lösen? Jedes Funktionsinstanzobjekt hat ein Konstruktorattribut (nicht „hat“, kann aber angeben, wer sein Konstruktor ist). Sie können auch den Instanzoperator verwenden, um festzustellen, ob das Objekt eine Instanz von XXX ist.

Der Code lautet wie folgt:


Das wäre perfekt, nein! Obwohl der Konstruktor objektspezifisch sein kann, müssen die Methoden in jeder Instanz des Objekts wiederholt werden!
function Person(name){
                this.name=name;
                this.fn=function(){
                    alert(this.name);
                }
            }
            var person1=new Person('Byron');
            console.log(person1.constructor==Person);//true
            console.log(person1 instanceof Person); //true

Sehen Sie, obwohl die fn der beiden Instanzen genau gleich sind, sind sie nicht dasselbe. Wenn ein Funktionsobjekt tausend Methoden hat, muss jede seiner Instanzen diese enthalten Die Methode macht die Erinnerung sprachlos.
function Person(name){
                this.name=name;
                this.fn=function(){
                    alert(this.name);
                }
            }
            var person1=new Person('Byron');
            var person2=new Person('Frank');
            console.log(person1.fn==person2.fn);//false

Gibt es eine nahezu perfekte Möglichkeit, ein Objekt zu konstruieren, das keine wiederholte Arbeit erfordert, stilvoll ist und keine Wiederholung üblicher Objektmethoden erfordert? Tatsächlich können wir feststellen, dass die Verwendung von Funktionen bereits den Anforderungen entspricht. Es gibt nur einen Unterschied: Es ist ein Container erforderlich, der von allen Instanzen von Funktionsobjekten gemeinsam genutzt wird. In diesem Container müssen Attribute und Methoden gemeinsam genutzt werden dass dieser Container fertig ist - —Prototyp. Schüler, die sich mit dem Prototyp nicht auskennen, können sich den JavaScript-Prototyp ansehen

Auf diese Weise hat jede Personeninstanz ihren eigenen Attributnamen und auch das Attribut share und die von allen Instanzen gemeinsam genutzte Methode printName. Die grundlegenden Fragen sind alle gelöst. Für die allgemeine Objektverarbeitung können Sie jederzeit diesen stilvollen und liebevollen Objekterstellungsmodus verwenden.
function Person(name){
                this.name=name;
            }
            Person.prototype.share=[];
            Person.prototype.printName=function(){
                alert(this.name);
            }
            var person1=new Person('Byron');
            var person2=new Person('Frank');
            console.log(person1.printName==person2.printName);//true

Das obige ist der detaillierte Inhalt vonWas sind JavaScript-Objekte? Ausführliche Erklärung zum Erstellen von Objektcode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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