Heim  >  Artikel  >  Web-Frontend  >  Sollte ich beim Erstellen von Objekten in js neue hinzufügen?

Sollte ich beim Erstellen von Objekten in js neue hinzufügen?

亚连
亚连Original
2018-06-11 11:58:141939Durchsuche

Dieser Artikel enthält hauptsächlich eine detaillierte Analyse des Problems des Hinzufügens neuer oder Nicht-Hinzufügens neuer Objekte zum vom js-Konstruktor erstellten Objekt. Wenn Sie an diesem Aspekt interessiert sind, lesen Sie ihn bitte.

Ich habe heute diese Frage gesehen:

Füllen Sie den Inhalt bei „TO DO“ aus, damit der folgende Code a.name = „name1“ unterstützt. ;

function Obj(name){
// TO DO
}
obj. /* TO DO */ = "name2";
var a = Obj("name1");
var b = new Obj;

Frage 1: Was macht der neue Betreiber?

Erstellen Sie ein neues Objekt.

Weisen Sie den Bereich des Konstruktors dem neuen Objekt zu (damit dieser auf das neue Objekt zeigt).

Führen Sie den Konstruktor aus Code ein (Eigenschaften zu diesem neuen Objekt hinzufügen);

gibt das neue Objekt zurück.

Frage 2: Was passiert, wenn der Konstruktor direkt ohne den neuen Operator ausgeführt wird?

function Obj(name){
this.name = name;
console.log(this); // 严格模式下是undefined 非严格模式下是window对象
}
var a = Obj("name1");
console.log(a); // 结果 => undefined

Oh, es stellt sich heraus, dass es nur als normaler Funktionsaufruf ausgeführt wird. Obj hat keinen Rückgabewert, also ist a undefiniert.

Zusammenfassung des Unterschieds zwischen den beiden

Verwenden Sie den neuen Operator, um ein Objekt zu erstellen, und der Konstruktor hat keinen Rückgabewert oder gibt einen Basisdatentyp zurück, dann wird das Objekt zurückgegeben, wie in das folgende Beispiel:

function Obj(name){
this.name = name;
}
var b = new Obj;
console.log(b); // Obj { name: undefined }
function Obj(name){
this.name = name;
return 'chic';
}
var b = new Obj;
console.log(b); // 同上

Wenn der Konstruktor einen Referenztyp zurückgibt:

function Obj(name){
this.name = name;
return {};
}
var b = new Obj;
console.log(b); // {}

Zusammenfassung

Für die Ausführung des Konstruktors ohne Hinzufügen von new ist der Rückgabewert das Ausführungsergebnis des Konstruktor; zur Ausführung mit dem neuen Schlüsselwort. Wenn der Rückgabewert ein Basisdatentyp ist, wird der Rückgabewert ignoriert. Wenn der Rückgabewert ein Referenztyp ist, wird der Referenztyp zurückgegeben.

Haben Sie die Antwort auf die Frage?

Referenzantwort:

function Obj(name){
this.name = name;
return this;
}
Obj.prototype.name = "name2";
var a = Obj("name1");
var b = new Obj;

Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

So implementieren Sie die Bildvorschaufunktion im WeChat-Applet

So verwenden Sie die Bildanmerkungskomponente in jquery .picsign

Wie verpacke ich die KOA2-Framework-App über Webpack? Was soll ich tun?

Detaillierte Interpretation der Entwicklungsideen für Vue-Komponenten

Das obige ist der detaillierte Inhalt vonSollte ich beim Erstellen von Objekten in js neue hinzufügen?. 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
Vorheriger Artikel:So verwenden Sie React+ReduxNächster Artikel:So verwenden Sie React+Redux