Warum ist die erste Aussage undefiniert?
Da t
keine Eigenschaft hat no
.
Zunächst einmal der Code innerhalb die Funktion, nämlich
this.name = "Jam";
no = "123";
wird nur dann ausgeführt, wenn die Funktion genannt wird. Sie tun dies mit var m = new t();
, die nachconsole.log(t.no);
kommt.
Zweitens, no = "123";
nicht erstellen Sie eine Eigenschaft auf dem Funktionsobjekt. Es wird versucht, den Wert der Variablen no
festzulegen. Da die Variable in Ihrem Beispiel nicht vorhanden ist, erstellt diese Zeile entweder eine globale Variableno
oder einen Fehler, wenn Ihr Code in strict mode ist.
Betrachten Sie das folgende Beispiel:
var no = 21;
function foo() {
no = 42;
}
console.log(no); // 21
foo();
console.log(no); // 42
Weil 't' Funktion ist, kein Objekt. –
@BlazeSahlzen - Funktionen * sind * Objekte. – nnnnnn
@nnnnnn Ich hätte genauer sein sollen. Was ich sagen wollte, ist, dass man, um auf die Eigenschaften von 'function'' t' zugreifen zu können, diese instanziieren müsste (d. H., Verwandle es in ein 'Objekt'). –