2016-06-28 2 views
1

Ich möchte ein Objekt A erstellen, so dass ich schreiben wie folgt aus:Was bedeutet "A.fn.A.init {}"?

A = function() { 
} 
A.prototype = { 
    init: function() { 
     console.log(this); 
    } 
} 

Das Ergebnis new A.prototype.init() ist A.init {}.
Wenn ich erstellen einen Alias ​​für A.prototype wie folgt aus:

A = function() { 
} 
A.as = A.prototype = { 
    init: function() { 
     console.log(this); 
    } 
} 

Das Ergebnis A.as.A.init {} statt A.init {} entpuppte.
Warum? Wie funktioniert this?

+0

Was ist das erwartete Ergebnis? – guest271314

+0

"* Das Ergebnis von' new A.prototype.init() '*" Tu das nicht. Erstellen Sie 'neue A' -Instanzen, wenn Sie das möchten, und legen Sie' init'-Methoden ab. – Bergi

Antwort

1

Was bedeutet "A.fn.A.init {}" in Javascript?

Es bedeutet eigentlich nichts. Weder die Konsolen-API noch die von ihr erzeugte Ausgabe sind standardisiert. Browser wenden einige implementierungsspezifische Heuristiken an, um den "Namen" oder die "Klasse" eines Objekts zu bestimmen (sie werden sich wahrscheinlich die constructor-Eigenschaft ansehen, tun aber anscheinend mehr als das).

In beiden Fällen bezieht sich this auf ein neues Objekt, das von A.prototype.init.prototype stammt, unabhängig davon, welchen Namen die Konsole Ihnen zuweist.