目录前言1.Constructor构造器模式1.1基础Constructor构造器模式1.2进阶 带原型的Constructor构造器模型2. Module 模块模式2.1对象字面量
首先我们要知道:什么是模式?
模式,就是专门为某些常见问题开发的、优秀的解决方案。它通常经过一系列实践证明、针对某类问题具有可重用性的解决方案。 而设计模式,不同于编程模式,其与具体的语言无关。
// 使用函数来模拟一个Car类
function Car(model,year,miles) {
this.model = model ;
this.year = year;
this.miles = miles;
this.toString = function () {
return this.model + "已经行驶了" + this.miles + "米";
}
}
//调用
var honda = new Car("东风Honda",2009,20000);//实例化Car
//输出结果
console.log(honda.toString());
缺陷:
function Car(model,year,miles) {
this.model = model ;
this.year = year;
this.miles = miles;
//每个对象都有构造器原型的所有属性。
Car.prototype.toString = function() {
return this.model + "已经行驶了" + this.miles + "米";
}
}
//调用
var honda = new Car("东风Honda",2009,20000);//实例化Car
console.log(honda.toString());
优点:
模块能帮助我们清晰分离和组织项目中的代码单元。
在js中有几种实现模块的方法:
本篇中我们主要介绍“对象字面量”表示法。
示例:
<script type="text/javascript">
const myObjectLiteral = {
varibaleKey : varibaleValue,
function: function () {
//实现
}
};
</script>
注意 :
JS中,Module模式用于进一步模拟类的概念。它能够使一个单独的对象拥有公有、私有方法和变量,从而屏蔽来自 全局作用域的特殊部分。进而降低了与其他脚本冲突的可能性。
其中,私有部分,主要利用了“闭包”。由于闭包的存在,声明的变量和方法只能在该模式内部可用。但在返回对象上 定义的变量和方法,外部使用者是能够调用的。
一个关于购物车的例子:
<script type="text/javascript">
const basketModule = (function() {
//私有
let baskey = [];
function doSomethingPrivate () {
//实现
}
function doSomethingElsePrivate() {
//实现
}
//返回一个暴露出的公有对象api
return {
//添加item到购物车
addItem: function (values) {
basket.push(values);
},
//获取购物车里的item数
getItemCount: function() {
return basket.length;
},
//私有函数的公有形式别名
doSomething: doSomethingPrivate,
//获取购物车里所有item的价格总值
getTotal: function() {
let itemCount = this.getItemCount(),
total = 0;
while (itemCount--) {
total += basket[itemCount].price;
}
return total;
}
}
})();
//交互
basketModule.addItem({
item: "bread",
price: 0.5
});
basketModule.addItem({
item: "酱油",
price: 1.5
});
//输出结果
console.log(basketModule.getItemCount());//2
console.log(basketModule.getTotal());//0.5+1.5 = 2
//注意
console.log(basketModule.basket);//underfined。因为basket没有暴露在公有的API中
</script>
优点:
缺点:
到此这篇关于Javascript Constructor构造器模式与Module模块模式的文章就介绍到这了,更多相关Javascript Constructor 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Javascript Constructor构造器模式与Module模块模式
本文链接: https://www.lsjlt.com/news/166020.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0