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的源码 示例

 

最新文章

  1. Step by step 活动目录中添加一个子域
  2. Java 浅析三大特性之一封装
  3. js动画之平抛运动
  4. [Nginx] 在Linux下的启动、停止和重加载
  5. gevent中如何实现长轮询
  6. UVALive 7275 Dice Cup (水题)
  7. delphi xe5 android 开发数据访问server端(二)
  8. JS监听组合按键
  9. SharePoint 2007 (MOSS/WSS) - how to remove &quot;Download a Copy&quot; context menu from a Document Library
  10. asterisk实时添加sip号码--sqlite篇
  11. 文字在div中居中
  12. 2017CCPC秦皇岛G ZOJ 3987Numbers(大数+贪心)
  13. Java多线程优化方法及使用方式
  14. 推荐一个比crontab更好用的东西:crongo
  15. CentOS7利用systemctl添加自定义系统服务
  16. tp5 Excel导出
  17.  sublime text3快速生成html头部信息(转)
  18. OpenGl 绘制一个立方体
  19. Java基础-Date类常用方法介绍
  20. MySQL数据库远程连接很慢的解决方案

热门文章

  1. RCTF crypto100(1)
  2. vue 组件 - 函数统一调用(自定义钩子)
  3. 【Unity】关于屏幕自适应的思路
  4. hyper-V pcie直通
  5. c/c++ 获取BMP文件信息
  6. 今日份学习:写一些代码 (Spring+AOP+Redis+MySQL练习)
  7. 数据结构 c++ 广义表
  8. helloctf.exe ----攻防世界
  9. 合天rev200.exe
  10. push 和 append 以及appendchild 用法和区别