Skip to content

Jinx-FX/JS-implementation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JS-implementation

not only javascript, also typescript

hooks

原型/原型链

深拷贝

call、apply 和 bind

Promise

生成器

EventLoop

JSON.stringify、JSON.parse

Error handle

其他

设计模式

设计模式是从许多优秀的软件系统中,总结出的成功的、能够实现可维护性、复用的设计方案,使用这些方案将可以让我们避免做一些重复性的工作

  • 单例模式 : 一个类只能构造出唯一实例
  • 策略模式 : 根据不同参数命中不同的策略
  • 代理模式 : 代理对象和本体对象具有一致的接口
  • 装饰者模式 : 在不改变对象自身的基础上,动态地给某个对象添加一些额外的职责
  • 组合模式 :
    • 组合模式在对象间形成树形结构
    • 组合模式中基本对象和组合对象被一致对待
    • 无须关心对象有多少层, 调用时只需在根部进行调用
  • 工厂模式 : 不暴露创建对象的具体逻辑,而是将逻辑封装在一个函数中,这个函数就可以被视为一个工厂
  • 访问者模式 : 在不改变该对象的前提下访问其结构中元素的新方法
  • 发布订阅模式 : 订阅者订阅相关主题,发布者通过发布主题事件的方式,通知订阅该主题的对象
  • 观察者模式 : 一个对象有一系列依赖于它的观察者(watcher),当对象发生变化时,会通知观察者进行更新

观察者与发布订阅模式的区别

观察者模式和发布-订阅模式之间的区别,在于是否存在第三方、发布者能否直接感知订阅者

  • 观察者模式:一个对象有一系列依赖于它的观察者(watcher),当对象发生变化时,会通知观察者进行更新
  • 发布订阅模式:订阅者订阅相关主题,发布者通过发布主题事件的方式通知订阅该主题的对象,发布订阅模式中可以基于不同的主题去执行不同的自定义事件。发布者不直接触及到订阅者、而是由统一的第三方来完成实际的通信的操作。

高阶函数(High Ordered Functions)

高阶函数的范式:

function HOF0(fn) {
  return function(...args) {
    return fn.apply(this, args);
  }
}

应用

手撕

异步调度

Reference

About

JS handwritten implementation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published