Функции и объекты 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» в своей книге, но я не понимаю, почему. Спасибо всем за ваши комментарии