摘要:首先,有一点要声明,下面所有文章的所有内容的代码,都不是我一个人独立完成的,它们来自于一本叫做《学习JavaScript数据结构和算法》(第二版),人民邮电出版社出版的这本书。github代码地址是https://github.com/loiane/javascript-datastructures 阅读全文
posted @ 2018-05-10 20:37 Zaking 阅读(1550) 评论(0) 推荐(3) 编辑
摘要:我们之前聊了聊基本的继承的概念,也聊了很多在JavaScript中模拟类的方法。这篇文章,我们主要来学习一下现代继承的一些方法。 九、原型继承 下面我们开始讨论一种称之为原型继承(prototype inheritance)的“现代”无类继承模式。在本模式中并不涉及类,这里的对象都是继承自其他对象。 阅读全文
posted @ 2020-04-30 09:25 Zaking 阅读(137) 评论(0) 推荐(1) 编辑
摘要:上一篇讲了最简单的代码复用模式,也是最基础的,我们普遍知道的继承模式,但是这种继承模式却有不少缺点,我们下面再看看其它可以实现继承的模式。 四、类式继承模式#2——借用构造函数 本模式解决了从子构造函数道父构造函数的参数传递问题。本模式借用了父构造函数,它传递子对象以绑定到this,并且还转发任意参 阅读全文
posted @ 2020-04-19 17:11 Zaking 阅读(149) 评论(0) 推荐(1) 编辑
摘要:我们有开始进入新篇章了。这篇内容主要讲代码复用模式,实际上代码复用,就是继承啊,原型啊,构造函数啊等等这一类的内容。对于前端进阶来说,是很重要的基础知识。这一篇内容会对原型、 继承有很深入的讲解。我也会尽我所能的为大家讲清楚、分析透彻。 代码复用是一个非常重要而且有趣的主题,简而言之,这是由于人们很 阅读全文
posted @ 2020-04-19 15:18 Zaking 阅读(20) 评论(0) 推荐(0) 编辑
摘要:我们学完了大部分对象创建模式相关的内容,下面还有一些小而精的部分。 七、对象常量 JavaScript中没有常量的概念,虽然许多现代的编程环境可能为您提供了用以创建常量的const语句。作为一种变通方案,JavaScript中常见的一种方法是使用命名约定,使那些不应该被修改的变量全部用大写字母以突出 阅读全文
posted @ 2020-04-02 18:58 Zaking 阅读(117) 评论(0) 推荐(1) 编辑
摘要:这一篇,我们主要来学习了解下沙箱模式以及静态成员的相关内容。 五、沙箱模式 沙箱模式(sandbox pattern)解决了命名空间模式的如下几个缺点: 对单个全局变量的依赖变成了对应用程序的全局变量的依赖。在命名空间模式中,是没办法使同一个应用程序或库的两个版本运行在同一个页面中,这是因为两者都需 阅读全文
posted @ 2020-04-02 17:23 Zaking 阅读(20) 评论(0) 推荐(0) 编辑
摘要:这一篇,我们主要来学习一下私有属性和方法以及模块模式。 三、私有属性和方法 JavaScript并没有特殊的语法来表示私有、保护、或公共属性和方法,在这一点上与Java或其他语言是不同的。JavaScript中所有对象的成员是公共的: var myobj = { myprop:1, getProp: 阅读全文
posted @ 2020-04-01 15:16 Zaking 阅读(132) 评论(0) 推荐(1) 编辑
摘要:这又是一个新的开始,对象的重要性不言而喻。在JavaScript中创建对象是十分容易的,之前聊过的对象字面量和构造函数都可以达到目的。但是本篇中,我们越过那些方法,以寻求一些额外的对象创建模式。 本篇内容,我们将学到命名空间(namespace),依赖声明(dependency declaratio 阅读全文
posted @ 2020-03-31 17:57 Zaking 阅读(26) 评论(0) 推荐(0) 编辑
摘要:这一篇是函数部分的最后一篇。我们来聊聊Curry化。 十、Curry 这部分我们主要讨论Curry化和部分函数应用的内容。但是在深入讨论之前,我们需要先了解一下函数应用的含义。 函数应用 在一些纯粹的函数式编程语言中,函数并不描述为被调用(即called或invoked),而是描述为应用(appli 阅读全文
posted @ 2020-03-30 16:04 Zaking 阅读(239) 评论(0) 推荐(4) 编辑
摘要:这篇文章我们主要来学习下即时对象初始化、初始化时分支、函数属性-备忘模式以及配置对象。这篇的内容会有点多。 六、即时对象初始化 保护全局作用域不受污染的另一种方法,即时对象初始化模式。这种模式使用带有init()方法的对象,该方法在创建对象后将会立即执行。init()函数需要负责所有的初始化任务。 阅读全文
posted @ 2020-03-28 19:21 Zaking 阅读(32) 评论(0) 推荐(0) 编辑
摘要:这篇,我们来学习下自定义函数以及即时函数的内容。 四、自定义函数 函数可以动态定义,也可以分配给变量。如果创建了一个新函数,并且将其分配给保存了另外函数的同一个变量,那么就以一个新函数覆盖了旧函数。在某种程度上,回收了旧函数指针以指向一个新函数。而这一切发生在旧函数体的内部。在这种情况下,该函数以一 阅读全文
posted @ 2020-03-27 21:17 Zaking 阅读(18) 评论(0) 推荐(0) 编辑