进击ReactNative-积水(JavaScript)渊

0 阅读

一个小小的雪球,在漫长的雪坡上往下滚,越滚越大,加速度、冲击力,规模都是呈现出加速度的扩张,只是需要每天的往下滚,日积月累。

【译】JavaScript 完整手册

一✐肯定看不完的手册
启✵从视觉上来讲,它更简单了,也是受欢迎的改变
渔✐慢慢看
鱼✎
⑴模板字符串可以执行更复杂的表达式
⑵扩展运算符…扩展数组,对象或者是字符串
⑶只在需要时注释:不要添加不能帮助理解的注释。如果代码自身有良好的变量、函数命名和函数注释,不要添加注释
评✎
⑴这本 JavaScript 完整手册遵循二八定律(the 80/20 rule):在 20% 的时间里了解 80% 的 JavaScript 知识

JavaScript 常见设计模式解析

一✐无处不设计
启✵站在巨人的肩膀上
渔✐概念✧例子✧对比
鱼✎
⑴设计模式☞代码可重用、约定俗成、工程化
⑵观察者模式☞被观察者状态改变主动通知观察者
⑶中介者模式☞统一管理
⑷代理模式☞访问控制
⑸单例模式☞全局访问
⑹工厂模式☞子类实例化
⑺装饰者模式☞添加额外职责

JavaScript 代码简洁之道

一✐干净的代码
启✵因为专注,所以专业
渔✐好坏对比
鱼✎
⑴SOLID☞
Single Responsibility单一功能
Open Close开【扩展】闭【修改】
Liskov Substitution里氏替换【子类替换父类】
Interface Segregation接口隔离
Dependency Inversion依赖反转【依赖抽象而不依赖具体】

你不知道的js中关于this绑定机制的解析[看完还不懂算我输]

一✐你不知道的this绑定机制
启✵看完不懂算我输
渔✐相互独立,完全穷尽
鱼✎
⑴绑定规则☞显示/new>隐式>默认
⑵new绑定☞全新对象、绑this、返回新或其他对象
⑶箭头函数☞继承于它外面第一个非箭头函数的函数this指向;绑定后不会被改变

JavaScript专题之跟着underscore学防抖

一✐JS频繁的事件触发Say No
启✵不塞不流,不止不行
渔✐为了鲁棒Robust,再思考一个新的需求
鱼✎
⑴防抖debounce☞连续触发间隔小于n,则最后一次触发生效【定时器实现】
⑵节流throttle☞固定间隔内多次触发只执行一次,依次循环【时间戳或定时器实现】

JavaScript深入之创建对象的多种方式以及优缺点

一✐JS创建和继承花式玩法
启✵I dont’t care but root
渔✐精益求精
鱼✎
⑴创建对象方式☞工厂【对象无法识别】➢构造函数【方法每次被创建】➢原型【无私有属性】➢组合【双剑合璧】
⑵继承方式☞原型链➢借用构造函数➢组合

JavaScript深入之call和apply的模拟实现

一✐JS函数操作模拟实现
启✵不做不知道
渔✐功能➢实现➢优化
鱼✎
⑴call和apply(改变执行函数this指向)模拟☞函数设为对象属性,执行,删除属性
⑵bind(返回新函数,this为创建首参数)模拟☞调用原函数apply实现,this为闭包持有的首参数
⑶new(创建对象)模拟☞调用构造函数apply实现,this为新建空对象
评✎
⑴bind返回的函数作为构造函数时,绑定的this值失效
⑵new的构造函数返回值如果是一个对象,则该对象为返回值,否则,返回本函数对象
⑶说了你又不听,听了你又不懂,懂了你又不做,做了你又做错,错了你又不认,认了你又不改,改了你又不服,不服你又不说!你要我怎么说你呢?

JavaScript深入之词法作用域和动态作用域

一✐慢镜头JS解析运行
启✵一步步来
渔✐思考实验解答
鱼✎
⑴JS是词法【静态】作用域,作用域基于创建的代码位置
⑵执行上下文☞
属性【变量对象、作用域链、this】
阶段【进入执行上下文、代码执行】
⑶变量对象☞函数形参、函数声明、变量声明

JavaScript深入之从原型到原型链

一✐顺藤【原型链】摸瓜【属性】
启✵图话
渔✐画图
鱼✎
⑴prototype☞函数的属性,构造函数.prototype=实例原型 constructor☞原型的属性,实例原型.constructor=构造函数 __proto__☞对象的属性,实例.proto__=实例原型
⑵原型链☞原型的原型,实例原型.__proto__=Object.prototype 原型☞每个JS对象(null除外)在创建时就与之关联的对象
⑶Object.prototype.__proto
=null

[译] 在你学习 React 之前必备的 JavaScript 基础

一✐万丈高楼【RN】平地【JS】起
启✵人若无名,便可专心练剑
渔✐上手React知识精要【80%的时间用到的20%知识】
鱼✎
⑴Class☞定义任意需要的方法、可继承扩展
⑵let和const☞代码块变量声明
⑶更短的语法☞箭头函数
⑷map和filter☞数组处理
⑸解构赋值☞复制对象或数组部分数据
⑹import和export☞文件导入和导出
评✎
⑴为了测试美国、日本、中国三地警察的实力,联合国将三只兔子放在三个森林中,看三地警察谁先找出兔子。任务:找出兔子。美国和日本警察都兴师动众地在森林里找,结果都是到了晚上无功而返。最后是中国警察,先是玩了一天王者荣耀,黄昏时一个拿着一根警棍进入森林,没五分钟,听到森林里传来一阵动物的惨叫,中国警察抽着烟有说有笑的出来,后面拖着一只鼻青脸肿的熊,熊奄奄一息的用兔子的叫声说:“不要再打了,我就是兔子!”

【第45期】JavaScript 箭头函数:适用与不适用场景

一✐箭头函数试试看
启✵权衡才是关键
渔✐辩证地看
鱼✎
⑴优点☞语法简洁、作用域直观、this绑定
⑵特色☞没有自己的执行期上下文,this和arguments均从继承父函数
⑶赞成☞遍历列表、管理异步、对象转换
反对☞对象的方法、深层调用链、动态上下文

JavaScript高级程序设计——上下文环境和作用域

一✐大环境【上下文】和小趋势【作用域】
启✵万法唯识,识外无境
渔✐原理探究
鱼✎
⑴上下文☞变量和函数表达式声明赋值undefined、this和函数声明赋值
⑵上下文栈☞执行全局代码产生栈,执行函数产生栈,调用完成后回退到上一个栈
⑶函数创建时确定作用域,运行时确定变量值

JavaScript高级程序设计——原型和原型链

一✐谈对象
启✵换个姿势阐述
渔✐概念+Demo层层递进
鱼✎
⑴值类型【undefined, number, string, boolean】不是对象,引用类型【函数、数组、对象、null】都是对象
⑵函数创建对象,对象里的一切皆属性【包括方法,可任意扩展】
⑶每个函数都有一个原型【prototype】,每个对象都有一个隐式原型【proto,指向创建它的构造函数的原型对象】

JavaScript 的 this 原理

一✐What this
启✵这种解释没错,但是教科书往往不告诉你,为什么会这样
渔✐问➢数据结构➢函数➢环境
鱼✎
⑴懂JS☞两种写法,可能有不一样的结果
⑵函数单独保存在内存中,通过函数地址访问,能在不同环境执行
⑶this☞指代函数当前的运行环境【函数地址的宿主】

JavaScript高级程序设计——闭包

一✐闭包听起来不好吃
启✵让生活更美好的小知识点
渔✐定义+举例
鱼✎
⑴闭包☞有权访问另一个函数作用域中的变量的函数,外部函数调用完成后上下文不会被销毁
⑵条件☞内部函数使用外部函数的变量、外部函数已经退出、内部函数可以访问
⑶应用☞函数作为返回值,函数作为参数传递
评✎
⑴匿名函数的执行环境具有全局性,因此this对象通常指向window(在通过call或apply函数改变函数执行环境的情况下,会指向其他对象)
⑵潜规则☞声明提前【函数内的声明在函数体内始终可见】、全局变量优先级低于局部变量
⑶JS没有块级作用域,只有函数级
⑷立即执行函数☞(function(){}) ()

JavaScript 内存机制(前端同学进阶必备)

一✐自己JS垃圾自己带走
启✵不要满足于写出能运行的程序,也不要认为机器的升级就能解决一切
渔✐模型➢生命周期➢泄露
鱼✎
⑴机制☞内存基元在变量创建时分配,在不用时“自动”释放
⑵模型☞栈【变量、池【常量】】、堆【对象】
⑶分代☞新生代【短命、复制】、老年代【长命、标记】
评✎
⑴基础数据类型: Number String Null Undefined Boolean
⑵拥有超多BUG并依然占有大量市场的IE是前端开发一生之敌!亲,没有买卖就没有杀害。

10分钟理解JS引擎的执行机制

一✐一眼看穿JS引擎
启✵十分钟
渔✐层层递进
鱼✎
⑴JS单线程☞天然支持互斥
异步☞避免卡死
机制☞Event Loop
⑵宏任务☞代码段、setTimeout、setInterval 微任务☞Promise、process.nextTick
⑶宏任务➢所有微任务➢新的宏任务循环

本文遵守 CC-BY-NC-4.0 许可协议。

Creative Commons License

欢迎转载,转载需注明出处,且禁止用于商业目的。

上篇进击ReactNative-FlatList源码解析
下篇进击ReactNative-积土(React)山