Javascript-Funktionen und -Objekte mit dem Schlüsselwort 'this' funktionieren nicht

meine frage hier handelt von funktionen und objekten in javascript. Ich habe drei Fragen, die von einer zur anderen stammen. Im folgenden Beispiel versuche ich, im Test auf den Wert 'a' zuzugreifen, aber ich erhalte keine Definition. Aber ich erstelle ein neues Testobjekt, dann kann ich auf den 'a'-Wert zugreifen und ihn ändern.

//create a function called test
         var test=function() {
           this.a=2
           this.b=3 };
           test.a//undefined
//create a object called test1 using 'new'
test1 = new test();
test1.a//2
//change the value of a in test1
test1.a=4
test1 //Object { a=4, b=3}

Als ich versuchte herauszufinden, warum dies passiert, stieß ich auf dieses ProblemJavascript-Funktionen sind Objekte? und eine andere Frage tauchte auf. Die akzeptierte Lösung für diese SO-Frage ist unten

var addn = function func(a) {
  return func.n + a;
};

addn['n'] = 3;
addn(3);

Ich habe die 'func.n' in 'this' geändert und es funktioniert nicht mehr

var addn=function func(a) {
 return this.n+a;
};
addn['n']=3;
addn(3); //NaN

anonymisieren mit 'this' hat auch nicht geholfen

    //anonymous function
var addn=function(a) {
     return this.n+a;
    };
    addn['n']=3;
addn(3); //NaN

Warum hat die Verwendung von "this" nicht funktioniert?

Eine letzte Frage: Was ist der Unterschied bei der Verwendung der Schlüsselwörter 'new' und 'createObject'? Douglas Crokford schlägt vor, "CreateObject" in seinem Buch zu verwenden, aber ich verstehe nicht, warum. Vielen Dank für Ihre Kommentare

Antworten auf die Frage(2)

Ihre Antwort auf die Frage