JS 优缺点
优点(简单)
- 对象
- 链(原型链 & 作用域链)
一切都是对象(包括函数),构建世界的原料,越少越简单、灵活。
观察者模式,例:
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
- 单线程事件轮询是个很适合异步并发的模型,因为避免了在程序内部管理多个线程带来的各种问题。这也是为什么 Ryan Dahl 当时选择了 js 写了 Node。
- 函数作为一等公民存在,简单够用的原生数据结构,闭包,如果你想的话完全可以写出函数式风格的 js。披着 C 系语言的外衣,流着 scheme 的血。
- 灵活。duck typing,动态指定函数的执行语境,动态混入,动态修改原型,动态修改原型链,甚至修改原生对象的原型... 很多时候你会发现 java 的一些设计模式就是带着镣铐跳舞,在 js 里完全没有必要。当然,js 的灵活也是把双刃剑,在好的工程师手里是一个助力,但在糟糕的工程师手里会产生很多反模式。
原文链接: https://www.zhihu.com/question/21735081/answer/19169798
滥用 class、继承 单例
缺点
原型链 规则:
- JS 中一切都是对象
- 所有对象的
__proto__
指向构造函数的prototype
(Object.prototype
除外)
小知识:
- 函数也是对象,它的构造函数是
Function
- 函数可以使用
new
来构造对象(箭头函数除外) - 普通对象的构造函数是
Object
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: JS 数据处理
下一篇: 谈谈自己对于 AOP 的了解
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论