JS 优缺点

发布于 2023-07-25 05:24:56 字数 1592 浏览 50 评论 0

优点(简单)

  • 对象
  • 链(原型链 & 作用域链)

一切都是对象(包括函数),构建世界的原料,越少越简单、灵活。

jimu

观察者模式,例:

class Observer {
  constructor() {
    this.subscribers = new Set()
  }

  subscribe(fn) {
    this.subscribers.add(fn)
    // 为什么要 return 一个函数?
    return () => {
      this.subscribers.delete(fn)
    }
  }

  publish(subject) {
    this.subscribers.forEach((fn) => {
      fn(subject)
    })
  }
}

java 对比: https://www.runoob.com/design-pattern/observer-pattern.html

  1. 单线程事件轮询是个很适合异步并发的模型,因为避免了在程序内部管理多个线程带来的各种问题。这也是为什么 Ryan Dahl 当时选择了 js 写了 Node。
  2. 函数作为一等公民存在,简单够用的原生数据结构,闭包,如果你想的话完全可以写出函数式风格的 js。披着 C 系语言的外衣,流着 scheme 的血。
  3. 灵活。duck typing,动态指定函数的执行语境,动态混入,动态修改原型,动态修改原型链,甚至修改原生对象的原型... 很多时候你会发现 java 的一些设计模式就是带着镣铐跳舞,在 js 里完全没有必要。当然,js 的灵活也是把双刃剑,在好的工程师手里是一个助力,但在糟糕的工程师手里会产生很多反模式。
    原文链接: https://www.zhihu.com/question/21735081/answer/19169798

滥用 class、继承 单例

缺点

原型链 规则:

  1. JS 中一切都是对象
  2. 所有对象的 __proto__ 指向构造函数的 prototype ( Object.prototype 除外)

小知识:

  1. 函数也是对象,它的构造函数是 Function
  2. 函数可以使用 new 来构造对象(箭头函数除外)
  3. 普通对象的构造函数是 Object

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

捂风挽笑

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文