js 工厂设计模式
2024-08-30 03:27:05
class Product{
constructor(name){
this.name = name;
}
init(){
alert(this.name);
}
}
function Creator(name){
return new Product(name);
} let p = Creator('p'); let p1 = Creator('p1');
生成的p, p1 都是标准化的,不允许自己 new 生成 对象 ,工厂模式,new 完以后每一个对象携带的方法和属性都是一致的。
实际例子
class jQuery {
constructor(selector) {
// 获取数组的slice
let slice = Array.prototype.slice
// 获取节点,利用slice.call将其结果返回给一个数组,因为可能是多个dom节点
let dom = slice.call(document.querySelectorAll(selector))
// 获取dom的长度
let len = dom ? dom.length : 0
// 进行循环
for (let i = 0; i < len; i++) {
// 将dom的数组元素赋值给this也就是实例的元素,元素的k就是数组的k,0,1,2...
this[i] = dom[i]
}
// 赋值数组的长度
this.length = len
this.selector = selector || ''
}
append(node) {
//...
}
addClass(name) {
//...
}
html(data) {
//...
}
// 此处省略若干 API
} // 这个函数相当于工厂,封装了返回实例的操作
// 入口,这个$是个函数,函数里面返回一个jquery实例
window.$ = function(selector) { return new jQuery(selector)
} console.log($(p))
jquery-1.7.1的源码 示例
最新文章
- Step by step 活动目录中添加一个子域
- Java 浅析三大特性之一封装
- js动画之平抛运动
- [Nginx] 在Linux下的启动、停止和重加载
- gevent中如何实现长轮询
- UVALive 7275	Dice Cup (水题)
- delphi xe5 android 开发数据访问server端(二)
- JS监听组合按键
- SharePoint 2007 (MOSS/WSS) - how to remove ";Download a Copy"; context menu from a Document Library
- asterisk实时添加sip号码--sqlite篇
- 文字在div中居中
- 2017CCPC秦皇岛G ZOJ 3987Numbers(大数+贪心)
- Java多线程优化方法及使用方式
- 推荐一个比crontab更好用的东西:crongo
- CentOS7利用systemctl添加自定义系统服务
- tp5 Excel导出
- sublime text3快速生成html头部信息(转)
- OpenGl 绘制一个立方体
- Java基础-Date类常用方法介绍
- MySQL数据库远程连接很慢的解决方案