12、JS语义分析该用迭代还是递归

你好,我是石川。 在前面两讲中,我们学习了JavaScript语言的数据类型,通过堆栈的数据结构了解了闭包的原理。这一讲,我们来聊聊算法。前面我们在讲到编程模式时提到,如果说函数式编程是输入、计算和输出,那中间的计算部分就可能用到算法了。而迭代和递归...

JavaScript进阶实战课

11、通过JS引擎的堆栈了解闭包原理

你好,我是石川。 在前面讲到编程模式的时候,我们就提到过闭包。 如果说一个函数“出生”的地方是作用域,从出生到被回收的“一生”是它的**生命周期,**那么闭包则可以突破这种空间和时间上的限制,那它是怎么做到这种突破的呢? 这节课,我们就从JavaSc...

JavaScript进阶实战课

10、JS有哪8种数据类型,你需要注意什么

你好,我是石川。 JavaScript的数据类型看上去不难理解,但是你确定真的理解并且会用它们吗?实际上,如果不系统地理解数据类型的概念,很可能会导致一些隐藏问题时不时地冒出来,给我们写的程序挖坑。比如简单的加法计算可能就会带来意想不到的结果值;或者...

JavaScript进阶实战课

9、面向对象:通过词法作用域和调用点理解this绑定

你好,我是石川。 今天,我们来讲讲JavaScript中的this。其实讲this的资料有很多,其中不少已经把这个概念讲的很清楚了。但是为了课程的系统性,我今天也从这个单元咱们讲到的对象和面向对象的角度来说一说。 因为现在正好赶上国庆假期,咱们这节课...

JavaScript进阶实战课

8、深入理解继承、Delegation和组合

你好,我是石川。 关于面向对象编程,最著名的一本书就数GoF(Gang of Four)写的《设计模式:可复用面向对象软件的基础》了。这本书里一共提供了23种不同的设计模式,不过今天我们不会去展开了解这些细节,而是会把重点放在其中一个面向对象的核心思...

JavaScript进阶实战课

7、深入理解对象的私有和静态属性

你好,我是石川。 在前面几讲里,我们围绕着函数式编程,从基础的输入、计算、输出讲起,到过程中可能产生的副作用,再到如何通过纯函数和不可变作为解决思路来管理副作用等等,都有了系统的了解。之后,我们又通过响应式编程和函数式编程的结合,了解了这种模式下面,...

JavaScript进阶实战课