js的设计模式和模块模式一看便懂
日期:2019-03-02
来源:程序思维浏览:1606次
JavaScript现在已经成为客户端Web开发的明显语言。从一开始,浏览器就引入了支持访问和修改文档对象模型组件的各种功能。jQuery已经将大多数本地功能抽象为新的构造。

然而,对于原生JavaScript,如果不加以注意的话,还是有一些问题。
在较小的项目中这些可以被忽略,但是在多个开发人员工作的巨大应用程序中,他们可能会产生问题
因此,为了解决这些问题,JavaScript中引入了某些设计模式。
模拟类
将所有全局函数名称和变量更改为标记并将它们覆盖在单个函数范围内。这创建了一个逻辑类; 将特性和功能结合在一起。


这个包装虽然提供了防止混合功能和变量的安全性,但它不区分公共和私人功能。
模块模式
明显区分公共和私人项目。在直接访问中定义的任何内容都是私有的,在'返回'块中定义的任何内容都是公共的。


揭示模块模式
在这里,整个结构在类块中声明,然后在类的末尾有一个“返回”块,其功能添加到公开暴露的代表。


这里首先是调用函数的变量,其次是函数delegate。这两个函数都将在最终对象中得到公共范围。
懒惰功能
如果我们有一些功能只能运行一次(通常用于初始化)和其他重复,我们应用懒惰函数。


我们创建一个类,并在其中声明只能执行一次的代码。然后在相同的范围内,声明与要多次运行的函数相同的类。
现在无论何时调用类对象,初始代码中的绑定都只执行一次,而ChangeColor处理程序(在新的类代码中)永久可用。
自定义对象构造函数

我们可以将函数添加到任何对象的“ 原型”属性中。这将定义注入已经声明的对象。所以初始化函数被包装在构造函数中,并将其他函数添加到原型绑定中。
所以我们发现了如何在我们自己的JavaScript类中提供一些OOPs原理来抽象和隐藏数据。

然而,对于原生JavaScript,如果不加以注意的话,还是有一些问题。
- 对于变量声明,如果我们忘记了“ var ”,它就变成了一个全局变量。
- 如果两个函数在不同的JavaScript文件中具有相同的名称,则最后一个要包含在页面中的文件将保留,而其他文件将丢失。
在较小的项目中这些可以被忽略,但是在多个开发人员工作的巨大应用程序中,他们可能会产生问题
- 没有“var”的变量也会在其他JavaScript文件的范围内,混合变量。由于很多变量分布在多个文件中,因此很难找到用于某个目的的确切变量,通常一个变量会覆盖所有其他变量并导致整个状态崩溃。
- 在不同文件中具有相同名称的功能(用于不同目的)将发生冲突。代码审查只能识别同一个文件中的问题,但是如果存在很多这样的文件,就会产生一个问题来查找所有相同的命名函数。
因此,为了解决这些问题,JavaScript中引入了某些设计模式。
模拟类
将所有全局函数名称和变量更改为标记并将它们覆盖在单个函数范围内。这创建了一个逻辑类; 将特性和功能结合在一起。


这个包装虽然提供了防止混合功能和变量的安全性,但它不区分公共和私人功能。
模块模式
明显区分公共和私人项目。在直接访问中定义的任何内容都是私有的,在'返回'块中定义的任何内容都是公共的。


揭示模块模式
在这里,整个结构在类块中声明,然后在类的末尾有一个“返回”块,其功能添加到公开暴露的代表。


这里首先是调用函数的变量,其次是函数delegate。这两个函数都将在最终对象中得到公共范围。
懒惰功能
如果我们有一些功能只能运行一次(通常用于初始化)和其他重复,我们应用懒惰函数。


我们创建一个类,并在其中声明只能执行一次的代码。然后在相同的范围内,声明与要多次运行的函数相同的类。
现在无论何时调用类对象,初始代码中的绑定都只执行一次,而ChangeColor处理程序(在新的类代码中)永久可用。
自定义对象构造函数

我们可以将函数添加到任何对象的“ 原型”属性中。这将定义注入已经声明的对象。所以初始化函数被包装在构造函数中,并将其他函数添加到原型绑定中。
所以我们发现了如何在我们自己的JavaScript类中提供一些OOPs原理来抽象和隐藏数据。
- 上一篇:js进程和线程的区别
- 下一篇:pdfjs使用教程附源码下载
精品好课