Вот пример класса псевдо в IIFEВ JavaScript, в чем преимущество обертывания псевдо-класса в IIFE?
// cow.js
(function(exports) {
"use strict";
function Cow(name) {
this.name = name || "Anon cow";
}
exports.Cow = Cow;
Cow.prototype = {
greets: function(target) {
if (!target)
throw new Error("missing target");
return this.name + " greets " + target;
}
};
})(this);
Что такое преимущество, что в течение следующих:
"use strict";
function Cow(name) {
this.name = name || "Anon cow";
}
exports.Cow = Cow;
Cow.prototype = {
greets: function(target) {
if (!target)
throw new Error("missing target");
return this.name + " greets " + target;
}
};
Не оба эти в конечном итоге добавив корова «конструктор 'функция глобального масштаба?
Файл cow.js включается через HTML-документ в тег скрипта. Это означает, что значение this
- это окно. Разве это не тот самый глобальный масштаб, который оба примера будут использовать для добавления функции?
Может ли кто-нибудь предоставить пример использования этого в модуле или в разных областях?
Это не дубликат, как IFFE в следующем связанный с этим вопрос не принимает параметр - What is the purpose of wrapping whole Javascript files in anonymous functions like “(function(){ … })()”?
код был скопирован здесь: https://nicolas.perriault.net/code/2013/testing-frontend-javascript-code-using-mocha-chai-and-sinon/
.P.r.i.v.a.c.y. – Tushar
@ Tushar Вы могли бы объяснить это более подробно? – Daryn
Во втором примере Cow становится глобальным методом (предполагается, что он определяется в области окна, поэтому он становится window.Cow), хотя это не в первом примере. –