Flutter开发环境搭建
官网安装教程
https://flutter.dev/docs/get-started/install
在官网根据不同操作系统,下载不同版本的Flutter SDK;
没有科学上网页面打开会有点慢;
macOS catalina(v10.15.x)开发环境搭建详细步骤参考bilibili视频:ht ...
时间分片
一、setTimeout
基于任务长度分块: 将长度位100000的长任务,分成每一块为1000的短任务,每次执行完之后,返还主线程的控制权,查看是主线程栈是否有优先级更高的任务(如响应用户输入);
基于时间片长度分块: 利用浏览器的performance API,可以获取当前任务已经执行的时间; ...
JavaScript设计模式与开发实践
学习JavaScript设计模式与开发实践的一些读书笔记!
第一章 面向对象的JavaScript
动态类型语言和静态类型语言
静态类型:在编译时已经确定变量的类型;
动态类型:变量类型要到程序运行的时候,待变量赋予某个值之后,才会具有某种类型;
...
JavaScript之函数柯里化
概念
柯里化是指这样一个函数(假设叫做createCurry),他接收函数A作为参数,运行后能够返回一个新的函数。并且这个新的函数能够处理函数A的剩余参数。
简单场景下的柯里化javascript1234567891011121314function add(a, b, c) { retur ...
面试手记
参考:https://github.com/brickspert/blog/issues/16
1. promise简单实现javascript123456789101112131415161718192021222324252627282930fun ...
JavaScript之串行Promise实现
问题:Promise原生语法,then的链式调用实现的promise串行执行不太语义化(声明式),语法稍微有点繁杂;
javascript123456789101112new Promise((resolve, reject) => { // Promise #1 resolve ...
JavaScript之组件封装
jQuery组件封装
思想:
利用立即执行函数(闭包)封装组件方法,避免污染全局作用域;
将方法挂到$.fn对象上,即可在jQuery实例对象上调用封装得方法;
实现:javascript123456789101112131415161718192021222324252627282930313 ...
JavaScript之函数式编程
纯函数:无副作用(不改变参数,不依赖环境,不进行请求,I/O操作);如map, slice等;
声明式代码
javascript1234567// 命令式const makes = [];for (let i = 0; i < cars.length; i++) { makes.push ...
JavaScript之new和bind
new实现的功能:
返回一个返回对象的函数;
返回对象的原型链(proto)链上构造函数的prototype;
利用apply给构造函数指定this引用;
javascript1234567891011121314function _new(fn){ return function() { ...
JavaScript之斐波那契序列
问题:N级台阶(比如100级),每次可走1步或者2步,求总共有多少种走法?
解法:问题本质上是斐波那契数列,假设只有一个台阶,那么只有一种跳法,那就是一次跳一级,f(1)=1;如果有两个台阶,那么有两种跳法,第一种跳法是一次跳一级,第二种跳法是一次跳两级,f(2)=2。如果有大于2级的n级台阶,那么 ...