写好js代码开端

创建javascript对象非常容易,但是要把代码写的比较容易维护和扩展,多团队协作,就需要一些模式来约束。javascript本身没有命名空间,模块(ES6有了),但是目前ES6各个浏览器对模块化的支持很不到位。所以,还是有必要学习下创建对象的模式。

命名空间结构

使用命名空间可以减少全局变量的使用,同时避免命名冲突和额外命名前缀。可以使用如下代码初始化命名空间,然后在对应命名空间下定义属性和方法。

 

模块化结构

随着代码增长,多人协作开发,模块化能够很好的来组织代码。js模块化结合了命名空间,IIFE,私有成员等模式。

有时需要导入全局变量到模块内部,为了不让内部的改变影响到全局变量,可以作为参数传递。

MYAPP.utilities.module = (function (app, global) {
 //将全局变量转换成了内部的局部变量使用
}(MYAPP, this));

链式结构

有时我们提供的模块支持这样的写法:myobj.method1(“hello”).method2().method3(“world”).method4();

这个需要在定义的方法里面返回this对象,例如:

var obj = {
 value: 1,
 increment: function() {
 this.value += 1;
 return this;
 },
 add: function(v) {
 this.value += v;
 return this;
 },
 shout: function() {
 alert(this.value);
 return this;
 }
 };

 obj.increment().add(2).shout();//4

本文参考《JavaScript Patterns》

javascript
作者:张雪飞
出处:https://zhangxuefei.site/p/1638
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注