在JavaScript中,将伪类封装在IIFE中有什么好处
In JavaScript, what is the benefit of wrapping a pseudo class in an IIFE?
以下是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的构造函数添加到全局范围中吗?
cow.js文件通过HTML文档包含在脚本标记中。这意味着this
的值是window。这不是两个例子用来添加函数的同一个全局作用域吗?
有人能提供一个在模块或不同范围中使用它的例子吗?
这不是重复的,因为以下相关问题中的IFFE没有参数-将整个Javascript文件包装在匿名函数中(如"(function(){…})()")的目的是什么?
代码是从这里复制的:https://nicolas.perriault.net/code/2013/testing-frontend-javascript-code-using-mocha-chai-and-sinon/
区别在于作用域-在第一种情况下,所有内容都在匿名函数作用域中定义,在第二种情况下在全局作用域中。IIFE的好处是模块封装,您可以在每个模块中定义具有相同名称的函数/类,而不会影响另一个模块。
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 全局变量和全局对象的属性之间有什么区别吗
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- IIFE中的函数引用不可用
- Javascript中的空白是什么
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 在ember/handlers中使用value和valueBinding有什么区别
- 什么'在webpack外部设置中,reactDom和reactDom不同
- 在这个例子中,IIFE有什么用
- 来自 TypeScript 模块的 JavaScript IIFE 中的默认参数的目的是什么?
- 什么是正确的javascript IIFE模板
- IIFE前面使用分号的目的是什么
- IIFE的写作方式有哪些?它们的用例是什么
- 在JavaScript中,将伪类封装在IIFE中有什么好处
- 那些自动执行的匿名函数(又名IIFE)实现有什么区别?
- 作为IIFE的一部分创建的DOM元素会发生什么?
- 将函数定义为返回函数的IIFE的目的是什么
- IIFE:var vs 有什么区别吗?