Я пытаюсь точно понять, что означает ключевое слово javascript new, почему оно необходимо и когда я должен его использовать.
Рассмотрим следующие примеры:
var x = new function(){
var self=this;
this.myFunction = function(){alert('foo ' + self.v)}
this.v='x';
};
var y = function(){
var self=this;
this.myFunction = function(){alert('foo ' + self.v)}
this.v='y';
return this;
}();
var f=function(){
var self=this;
this.myFunction = function(){alert('foo ' + self.v)}
this.v='z';
}
var z = new f();
x.myFunction();
y.myFunction();
z.myFunction();
x,y и z все объекты.Потенциально с открытыми и закрытыми переменными-членами.
x и z, где построено с использованием нового ключевого слова.Насколько я могу судить, новое ключевое слово просто выполняет функцию и возвращает контекст.Таким образом, я предполагаю, что в приведенном выше примере x и y по сути являются одиночными, поскольку любая ссылка на исходную функцию потеряна?
Кроме того, все ли они в точности эквивалентны?Если нет, то в чем различия, и когда я хотел бы использовать один подход или избегать другого?
Спасибо за любые объяснения.