随笔分类 - 读书笔记
1
摘要:这个坑比较深 可能写完我也看不懂(逃 ES6提供了一个新的函数特性,名字叫Generator,一开始看到,第一反应是函数指针?然而并不是,只是一个新的语法。 入门 简单来说,用法如下: 1、函数生成器特点是函数名前面有一个‘*’ 2、通过调用函数生成一个控制器 3、调用next()方法开始执行函数
阅读全文
摘要:坑坑坑 关于术语:决议、完成以及拒绝。 首先观察Promise(..)构造器: 该构造器接受一个函数,函数接受连个参数,参数也TM是函数。。。 第一个通常用于标识Promise已经完成,第二个总是用于标识Promise被拒绝。(这里用词很奇妙啊) 实际上,这只是形参的名字,作用是固定的。 第二个参数
阅读全文
摘要:继续填坑 模式 考虑下面的代码: new Promise(..)模式通常称为revealing constructor。传入函数会立即执行(不会像then(..)中的回调一样异步延迟),它有两个参数,分别为resolve和reject。这些是promise的决议函数。resolve通常标识完成,re
阅读全文
摘要:之前的笔记没保存没掉了,好气,重新写! 填坑…… 现在与将来 在单个JS文件中,程序由许多块组成,这些块有的现在执行,有的将来执行,最常见的块单位是函数。 程序中'将来'执行的部分并不一定在'现在'运行的部分执行完之后就立即执行,即异步执行将来的部分。 一般的ajax请求都不是同步完成,如果要正确打
阅读全文
摘要:event loop 网上看到的一篇文章,关于介绍task和Tasks, microtasks, queues and schedules,尝试简单翻译一下写进来吧! 原文地址:https://jakearchibald.com/2015/tasks-microtasks-queues-and-sc
阅读全文
摘要:继承 mixin混合继承 这种复制是浅复制,对象或者数组函数等都是同一个引用,改变obj1的会同时影响obj2。 寄生继承 ... 隐式继承 子类调用fn.call(this) 深拷贝需要重新声明一个变量(对象),遍历(递归)复制,详情见我的函数技巧,不贴出来了。 原型 Javascript对象中有
阅读全文
摘要:好想要对象··· 函数的调用位置不同会造成this绑定对象不同。但是对象到底是什么,为什么要绑定他们呢?(可以可以,我也不太懂) 语法 对象声明有两个形式: 1、字面量 => var obj = { ... }; 2、构造形式 => var obj = new Object(); 两种形式生成的对象
阅读全文
摘要:关于this 与静态词法作用域不用,this的指向动态绑定,在函数执行期间才能确定。感觉有点像C++的多态? 这个例子很好理解,谁调用的函数,this就指向谁。 当一个函数被调用时,会创建一个活动记录(上下文)。这个记录会包含函数在哪里被调用,函数的调用方法,传入的参数等信息。this就是记录的其中
阅读全文
摘要:闭包定义 当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。 看一段最简单的闭包代码: bar()函数可以访问foo()的作用域,通过foo()执行后,返回bar()并当成一个值传递给baz。当baz执行时,bar()依然持有对该作用域的引用,而这个引用就叫做
阅读全文
摘要:变量声明提升 Javascript代码一般情况下是由上往下执行的,但是有些情况下不成立。 如果同时有函数声明与变量声明呢? 两个函数声明呢? 另外一个案例在chrome中报错了,估计是浏览器优化过,但是不在判断语句中声明函数是一个好的习惯。
阅读全文
摘要:函数作用域 Javascript具有基于函数的作用域,每声明一个函数,都会产生一个对应的作用域。 IIFE 如果需要封装某些变量,但同时不想多出一个函数名与调用函数,可以使用IIFE,立即执行函数。 当函数被括号包起来时,被当成一个函数表达式了,所以可以立即执行,区分函数声明和函数表达式最简单的方法
阅读全文
摘要:JS引擎 编译与执行 Javascript引擎会在词法分析和代码生成阶段对运行性能进行优化,包含对冗余元素进行优化(例如对语句在不影响结果的情况下进行重新组合)。 对于Javascript来说,大部分情况下编译发生在代码执行前的很短时间内,涉及的概念有引擎、编译器、作用域。 变量声明例如var a
阅读全文
摘要:基础概念 CSS样式可分为两种,一种值接近无限的集合(color,width),一种值只有几种(display),可以进行计算的样式,产生了动画效果。\ 1. 动画的第一步是获得元素的精确样式值。 2. 若要做平移,传入结束位置、距离、时长、fps。 tips:fps设置多少合适? 除了人的眼睛,还
阅读全文
摘要:setTimeout/setInterval 1. 如果回调执行时间大于间隔时间,真正的间隔时间会大一些。 2. 存在一个最小的时间间隔,即使seTimeout(fn,0),在IE6-IE8中大概为15.6ms,后来精确到10ms,IE10为4ms,其他浏览器大概也是4ms。 3. 回调时间取0时,
阅读全文
摘要:节点的创建 浏览器提供了多种手段创建API,从流行程度依次是document.createElement、innerHTML、insertAdjacentHTML、createContextualFragment。 document.createElement:传入一个标签名,返回此类型的元素节点。
阅读全文
摘要:选择器引擎涉及相关概念 概念 以Sizzle的主函数声明为例,来说明引擎的相关概念。 种子集seed:如果CSS选择器非常复杂,需要分几步来得到结果,那么第一次得到的元素集合就叫种子集。Sizzle引擎的解析基本上是由右到左,种子集中的一部分就是我们最后得到的元素。如果引擎是由左到右,那么就只是依次
阅读全文
摘要:选择符 选择符是指CSS样式规则最左边的部分,例如 p{},#id{},.class{},p.class{} 等等 总共可以分为四大类: 并联选择器 => 逗号 => $('div,span') 简单选择器 => ID,CLASS,TAG,ATTR,* => $('#id'),$('.class')
阅读全文
摘要:这一篇写一点小知识 JS中0.1+0.2为什么不等于0.3? 关于这个问题之前也很疑虑,老师也只是笼统的讲这是JS的语言问题,但是内部具体的情况却没有讲,看了书才发现原理如此简单。 简单来讲,计算机识别的数字长度是有限制的,过大的数字计算会出现infinity或者NAN,这个好理解,但是为什么小数也
阅读全文
摘要:这次写一些函数 1.模拟Object.keys方法 2.repeat/字符串复制 3.byteLen/计算字节数 4.truncate/字符串截取 5.trim/去除字符串两端空白 6.shuffle/打乱数组 7.flatten/平坦化 8.函数劫持
阅读全文
摘要:随笔记录一下读书心得 1. 框架模块-核心模块 该模块是框架最先执行的部分,jQuery与vue中都有初始化的代码。 模块的功能主要是:对象扩展、数组化、类型判定、事件绑定和解绑、无冲突处理、模块加载、domReady 之前阅读过jQuey的部分源码,对这些功能还是有感触的,比如说: 对象扩展: 数
阅读全文
1