JS框架设计读书笔记之-核心模块】的更多相关文章

随笔记录一下读书心得 1. 框架模块-核心模块 该模块是框架最先执行的部分,jQuery与vue中都有初始化的代码. 模块的功能主要是:对象扩展.数组化.类型判定.事件绑定和解绑.无冲突处理.模块加载.domReady 之前阅读过jQuey的部分源码,对这些功能还是有感触的,比如说: 对象扩展: jQuery.extend({ merge: function(first, second) { var len = +second.length, j = 0, i = first.length; f…
节点的创建 浏览器提供了多种手段创建API,从流行程度依次是document.createElement.innerHTML.insertAdjacentHTML.createContextualFragment. document.createElement:传入一个标签名,返回此类型的元素节点.对于浏览器不支持的节点类型,也可以支持,后来被用于IE6-IE8支持H5新标签.  console.log(document.createElement('abc')); //<abc></a…
基础概念 CSS样式可分为两种,一种值接近无限的集合(color,width),一种值只有几种(display),可以进行计算的样式,产生了动画效果.\ 1. 动画的第一步是获得元素的精确样式值. 2. 若要做平移,传入结束位置.距离.时长.fps. tips:fps设置多少合适? 除了人的眼睛,还要考虑到显示器的显示速度与浏览器的渲染速度.据国外统计,根据人所能感知到的变化间隔,25毫秒为最佳数值. 缓动公式 缓动公式来源于数学上的三角函数.二次项方程.高阶方程式,有了公式就可以控制移动速度.…
setTimeout/setInterval 1. 如果回调执行时间大于间隔时间,真正的间隔时间会大一些. 2. 存在一个最小的时间间隔,即使seTimeout(fn,0),在IE6-IE8中大概为15.6ms,后来精确到10ms,IE10为4ms,其他浏览器大概也是4ms. 3. 回调时间取0时,该函数会在能立即执行的时段触发. 4. 不写第二个参数,浏览器会自动配时间. 5. IE10与标准浏览器都支持额外参数,从第三个参数起,作为回调函数的参数传入. setTimeout(function…
选择符 选择符是指CSS样式规则最左边的部分,例如 p{},#id{},.class{},p.class{} 等等 总共可以分为四大类: 并联选择器 => 逗号 => $('div,span') 简单选择器 => ID,CLASS,TAG,ATTR,* => $('#id'),$('.class'),$('div'),$('[attr]'),$('*') 关系选择器 => ' '.'>'.'+'.'~' => $('div span').$('div>spa…
这一篇写一点小知识 JS中0.1+0.2为什么不等于0.3? 关于这个问题之前也很疑虑,老师也只是笼统的讲这是JS的语言问题,但是内部具体的情况却没有讲,看了书才发现原理如此简单. 简单来讲,计算机识别的数字长度是有限制的,过大的数字计算会出现infinity或者NAN,这个好理解,但是为什么小数也会出现呢?如果从二进制的角度思考就很简单了,对于一定范围内的正数,总是可以表示成对应的二进制,但是小数就有问题了,十进制的0.5相当于热二进制的0.1,0.25 => 0.01,0.125 => 0…
选择器引擎涉及相关概念 概念 以Sizzle的主函数声明为例,来说明引擎的相关概念. function Sizzle(selector, context, results, seed) { //... } 种子集seed:如果CSS选择器非常复杂,需要分几步来得到结果,那么第一次得到的元素集合就叫种子集.Sizzle引擎的解析基本上是由右到左,种子集中的一部分就是我们最后得到的元素.如果引擎是由左到右,那么就只是依次查询兄弟与子节点. 结果集results:选择器引擎最终返回的元素集合,约定要与…
这次写一些函数 1.模拟Object.keys方法 Object.keys = Object.keys || function(obj){ var a = []; // a[0],a[1]...分别赋值为obj的键 for(a[a.length] in obj); return a; } 2.repeat/字符串复制 function repeat(target,n){ var s = target,total = ''; while(n > 0){ if(n % 2 == 1){ total…
我觉得多看几本进阶的书 与其十本书读一遍,不如一本书读十遍 读书的启示: 读好书(看推荐) 精读(重复看) 能读厚书(javascript权威指南) Object.keys Object.keys=Object.keys||function(obj){ var a=[]; for(a[a.length] in obj); return a; } -----理解 obj={a:1, b: 2}; let a=[]; for (i in obj) { //a[a.length] a.length=0…
借到了司徒正美的写的js框架设计一书,司徒大神所著有些看不太懂,果然尚需循序渐进,稳扎js基础之中. 第一张开篇司徒阐述了种子模块的概念 种子模块亦为核心模块,框架最先执行模块,司徒见解应包含:对象扩展.数组化,类型判定,简单事件的绑定和写在,无冲突处理,模块加载与domReady.应具有扩展性.常用.稳定等特点. 1.1 命名空间 一观各大框架,基本是定义一个全局变量作为命名空间,如Ext的Ext等,大体抽象取例为: if(typeof(Ten)==='undefined'){ Ten={};…