罗晨汛

罗晨汛

移动互联网开发者

JavaScript本身不提供一个 class 实现(在 ES2015/ES6 中引入了 class 关键字,但那只是语法糖,JavaScript 仍然是基于原型的), 而是一种基于原型的语言(prototype-based language) —— 同一类型的对象共有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain)

我看过许多文章,一上来就大讲prototypethis原型链等等“高深”的内容,把各种概念抛出来把人看得云里雾里、似懂非懂。而在这里,我用自己的思路和大家一起分析与学习下JS的面向对象技术。我将以面向对象的三大特性为切入点,尝试着深入了解JavaSctipr的面向对象设计思路与实现:

阅读全文 »

我们说程序=数据结构+算法,这表明了数据结构在一门语言中的重要性,他将是你所写的程序的主要构成。而变量是数据结构的载体,数据结构常常是一块特定结构的内存空间,而要引用这段内存空间,我们就需要操作变量。因为JS是一门弱类型的语言,因此它的变量的概念有点像C中的指针或Java中的引用,表示其内容就是其指向的这段内存结构。

本章我们将先了解JavaScript中的数据类型,不同数据类型代表不同的意义、也占用不同的内存空间。再看看变量,他如上面说的代表一份内存的载体,也代表着一个作用域。最后我们看下算法,js中的控制流程与函数。

阅读全文 »

Yarn 是 Facebook 发布的一款依赖包安装工具。是一个新的快速安全可信赖的可以替代 NPM 的依赖管理工具。官方对其的介绍:

  • 与 npm 兼容

  • 速度超快 (可离线下载)
    Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。

  • 超级安全
    在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。

  • 超级可靠
    使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。

  • 扁平模式
    将依赖包的不同版本归结为单个版本,以避免创建多个副本。

阅读全文 »

上一篇中我们讨论了 Block 的来源,它是 OC 中对闭包的实现。Block 的设计初衷及其特性,主要 3 个特性:

1.可嵌套定义,可在函数及 Block 内定义 Block;
2.Block 内可访问外层变量,这里我们上篇介绍了有 截取变量__block 变量
3.方法传递,包括了后面会介绍的 Block 的堆拷贝。

那根据我们的 “三问精神”,这篇开始我们就来深究一下 Block 本身及这些特性是怎样设计并实现的。

这一篇中,我们将为深入 Block 源码做好各种准备,它将为我们后续对 Block 的研究或是学习其它技术提供知识储备与帮助。

阅读全文 »

对于一个 iOS 研发来说,Block 绝对是是日常使用率最高的几种工具之一。不知道大家在平常的使用之余有没有想过,Block 到底是什么?它是怎样设计出来的,底层是如何实现的?

从本章起,我们就来一起探究一下 iOS 中的 Block 技术。

Block 就是带有局部变量 (也叫自动变量) 的匿名函数。

上面这个也许是我们见过最多的 Block 定义了。老实说,可能你本来还大概知道 Block 是个什么东西,听到这个定义之后更懵逼了,局部变量、匿名函数,什么鬼?我们不妨抛开此定义,细想下,Block 为什么存在,是为了解决什么问题?

阅读全文 »
0%