ООП в Javascript Помогите пожалуйста разобраться, есть ли какая-то принципиальная разница в двух следующих примерах?function A(){ this.a = 100; this.b = 200; } var a = new A(); function A(){ this.a = 100; } A.prototype.b = 200; var a = new A();
В разных местах встречал и тот и другой пример. Если есть разница, то в чем?
Да, между этими двумя примерами есть принципиальная разница.
В первом примере, первая функция A определяет свойства a и b с помощью ключевого слова this. При создании нового объекта a с помощью оператора new A(), каждый новый объект будет иметь свои собственные копии этих свойств a и b.
Во втором примере, функция A сначала определяет только свойство a, а затем добавляет свойство b к прототипу функции A с помощью A.prototype.b = 200;. При создании нового объекта a с помощью оператора new A(), объект будет иметь свойство a, установленное в 100, а свойство b будет унаследовано от прототипа функции A и будет равно 200.
Таким образом, основное различие состоит в том, что в первом случае каждый объект имеет свои собственные копии свойств, а во втором случае свойство наследуется от прототипа.
Да, между этими двумя примерами есть принципиальная разница.
В первом примере, первая функция A определяет свойства a и b с помощью ключевого слова this. При создании нового объекта a с помощью оператора new A(), каждый новый объект будет иметь свои собственные копии этих свойств a и b.
Во втором примере, функция A сначала определяет только свойство a, а затем добавляет свойство b к прототипу функции A с помощью A.prototype.b = 200;. При создании нового объекта a с помощью оператора new A(), объект будет иметь свойство a, установленное в 100, а свойство b будет унаследовано от прототипа функции A и будет равно 200.
Таким образом, основное различие состоит в том, что в первом случае каждый объект имеет свои собственные копии свойств, а во втором случае свойство наследуется от прототипа.