Функции и объекты JavaScript, использующие ключевое слово this, не работают

мой вопрос здесь о функциях и объектах в JavaScript. У меня есть три вопроса, которые связаны между собой. В приведенном ниже примере я пытаюсь получить доступ к значению «а» в тесте, но я получаю неопределенный. но я создаю новый объект теста, затем я могу получить доступ к «а» оценить и изменить его.

//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}

пытаясь выяснить, почему это происходит, я наткнулся на этофункции JavaScript являются объектами? и еще один вопрос возник из этого. Принятое решение для этого вопроса SO ниже

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

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

Я изменилfunc.n» кэтот' и это больше не работает

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

сделать анонимную функцию с 'этот' тоже не помогло

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

зачем использоватьэтот' не работал?

последний вопрос: в чем разница в использовании ключевого слова?новый» а также 'CreateObject», Дуглас Крокфорд предлагает использоватьCreateObject» в своей книге, но я не понимаю, почему. Спасибо всем за ваши комментарии

Ответы на вопрос(2)

Ваш ответ на вопрос