注册

4 个 JavaScript 的心得体会


d1e029c4a60d45fe96e1cb3435d58893~tplv-k3u1fbpfcp-zoom-crop-mark:3024:3024:3024:1702.awebp?


按需所取,冲冲冲ヾ(◍°∇°◍)ノ゙


一、你能说出 JavaScript 的编程范式吗?


 


首先要说出:JavaScript 是一门多范式语言!支持面向过程(命令式)、面向对象(OOP)和函数式编程(声明式)。


其次,最重要的是说出:JavaScript 是通过原型继承(OLOO-对象委托)来实现面向对象(OOP)的;


如果还能说出以下,就更棒了:JavaScript 通过闭包、函数是一等公民、lambda 运算来实现函数式编程的。


如果再进一步,回答出 JavaScript 演进历史,就直接称绝叫好了:JavaScript的语言设计主要受到了Self(一种基于原型的编程语言)和Scheme(一门函数式编程语言)的影响。在语法结构上它又与C语言有很多相似。

 

  • Self 语言 => 基于原型 => JavaScript 用原型实现面向对象编程;
  • Scheme 语言 => 函数式编程语言 => JavaScript 函数式编程;
  • C 语言 => 面向过程 => JavaScript 面向过程编程;




推荐 Eric Elliott 的另外两篇文章,JavaScript 的两大支柱:


  1. 基于原型的继承
  2. 函数式编程



二、什么是函数式编程?




函数式编程是最早出现的编程范式,通过组合运算函数来生成程序。有一些重要的概念:


  • 纯函数
  • 避免副作用
  • 函数组合
  • 高阶函数(闭包)
  • 函数组合
  • 其它函数式编程语言,比如 Lisp、Haskell

本瓜觉得这里最 nb 就是能提到 monad 和延迟执行了~




三、类继承和原型继承有什么区别?





类继承,通过构造函数实现( new 关键字);tips:即使不用 ES6 class,也能实现类继承;


原型继承,实例直接从其他对象继承,工厂函数或 Object.create();


本瓜这里觉得能答出以下就很棒了:


类继承:基于对象复制;


原型继承:基于对象委托;


推荐阅读:


 

四、面向对象和函数式的优缺点




面向对象优点:对象的概念容易理解,方法调用灵活;


面向对象缺点:对象可在多个函数中共享状态、被修改,极有可能会产生“竞争”的情况(多处修改同一对象);


函数式优点:避免变量的共享、修改,纯函数不产生副作用;声明式代码风格更易阅读,更易代码重组、复用;


函数式缺点:过度抽象,可读性降低;学习难度更大,比如 Monad;

 

OK,以上便是本篇分享。点赞关注评论,为好文助力👍 🌏









0 个评论

要回复文章请先登录注册