
JS设计模式之策略模式
意图 {#意图} -------- > 定义一系列算法, 把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化。 > > ------《设计模式:可复用面向对象软件的基础》中文版第234页 由于在JS中,函数是一等公民,所以我们这里直接把函数当作这一个个策略对象即可。 示例 {#示例} -------- 我们的编码目的...
意图 {#意图} -------- > 定义一系列算法, 把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法可独立于使用它的客户而变化。 > > ------《设计模式:可复用面向对象软件的基础》中文版第234页 由于在JS中,函数是一等公民,所以我们这里直接把函数当作这一个个策略对象即可。 示例 {#示例} -------- 我们的编码目的...
源码 {#源码} -------- > 来自半年后的说明:我把代码转放到 gists 里了,当时代码风格受 Python 影响较大,这里就不再更改了,毕竟大家本地都有自己的格式化工具。 点击[这里](https://gist.github.com/hikariyo/b838dff3bdf0d280b25f50a66abd699c)前往Github获取本文源码。 需求...
背景 {#背景} -------- 在JS中并没有原生枚举的实现,可以通过下面几种方法来模拟类似的操作。 直接使用字符串 {#直接使用字符串} ------------------ 上代码: |---------------------------------------|-------------------------------------------------...
背景 {#背景} -------- 我没有系统性的从头开始学过一遍JS,全凭之前学的其它语言,尤其是Python,直接上手操作了,所以留了不少的坑。 虽然对我来说是一个坑,但我觉得本文更适合放到学习的分类里。 给出下列代码。这里是对原问题的一个抽象,只是把问题的核心单独摘出来了: |------------------------------------|-------...
<h2>背景 {#背景}</h2> <p>众所周知,JS是单线程语言,但它支持异步操作,其核心机制就是JS引擎的<strong>事件循环</strong>。</p> <p>先上一段代码:</p> <p>|----------------------------------...
<h2>实现 {#实现}</h2> <p>代码看起来很简单,这里就直接给出来了:</p> <p>|---------------------------------------------------|-----------------------------------------------------------...
背景 {#背景} -------- 遍历数组的时候,我相信大多数人已经用上ES6的`for...of`语法了: |---------------------|--------------------------------------------------------------------------------------| | ``` 1 2 3 4 5 6 ```...
<h2>不用箭头函数的实现 {#不用箭头函数的实现}</h2> <p>网上看到很多用箭头函数的版本,在看不懂的时候非常的眼花。</p> <p>所以在这里我选择先用纯粹的<code>function</code>配合<code>arguments</code>分析完原理,再...
<p><img src="http://static.51tbox.com/static/2024-11-29/col/be42079e6c58a7aebeee05428a112086/06fe7fbca2b24b8288cfd0dc3e4a5a28.gif.jpg" alt="热帖" />网站首页的统计数字看起来...
最近调整了下主页侧边栏,给"音乐播放器"、"标签云"和"友情链接"...