Предположим, что у вас есть эта функция:
var Foo = function(){
this.A = 1;
this.B = 2;
};
Если вы вызываете это как автономную функцию следующим образом:
Foo();
Выполнение этой функции добавит два свойства в window
(A
и B
). Он добавляет его в window
, потому что window
- это объект, который вызывает функцию, когда вы ее выполняете, и this
в функции - это объект, который вызывает эту функцию. В Javascript по крайней мере.
Теперь вызовите его следующим образом: new
:
var bar = new Foo();
Что происходит, когда вы добавляете new
к вызову функции, создается новый объект (только var bar = new Object()
) и что функция this
внутри функции указывает на только что созданную Object
, а не на объект, вызывающий эту функцию. Таким образом, bar
теперь является объектом со свойствами A
и B
. Любая функция может быть конструктором, она не всегда имеет смысл.