JS框架设计读书笔记之-节点模块
节点的创建
浏览器提供了多种手段创建API,从流行程度依次是document.createElement、innerHTML、insertAdjacentHTML、createContextualFragment。
document.createElement:传入一个标签名,返回此类型的元素节点。对于浏览器不支持的节点类型,也可以支持,后来被用于IE6-IE8支持H5新标签。
console.log(document.createElement('abc')); //<abc></abc>
innerHTML:创建效率至少比createElement快2-10倍,并且可以一次性大量生成节点,但是对于空白的处理有兼容问题;另外innerHTML不会执行script里面的脚本,jQuery直接用正则把内容抽出来使用全局eval执行了。最后一个问题是有些标签不能直接作为div的子标签,例如tr、td、th,框架用特殊标签包裹这些,结果后来发现浏览器会自动补全这些标签...
insertAdjacentHTML:可以灵活的将节点插入任意位置,但是同样有标签包裹问题。
节点的插入
appendChild:参数类型确定,无重载。
节点的复制
cloneNode:IE会复制绑定的事件,由于引用不是来自框架,也无法解除,一般框架重写API,接受一个布尔参数决定是否复制事件。
节点的删除
removeNode:IE私有实现,将目标从文档树中删除,返回目标节点。接受一个参数,false时仅删除目标节点,保留子节点。
removeChild:在老IE有内存泄露问题,因为在IE6-IE8中存在一个叫DOM超空间的概念,当元素移出DOM树,又有JS关联时,此元素不会消失,会被保存到一个叫超空间的地方。
// EXT框架中针对IE6/IE7的重写
var removeNode = IE6 || IE7 ? function() {
var d;
return function(node) {
if (node && node.tagName != 'BODY') {
d = d || document.createElement('div');
d.appendChild(node);
d.innerHTML = '';
}
}
}() : function(node) {
//removeChild
}
JS框架设计读书笔记之-节点模块的更多相关文章
- JS框架设计读书笔记之-核心模块
随笔记录一下读书心得 1. 框架模块-核心模块 该模块是框架最先执行的部分,jQuery与vue中都有初始化的代码. 模块的功能主要是:对象扩展.数组化.类型判定.事件绑定和解绑.无冲突处理.模块加载 ...
- JS框架设计读书笔记之-选择器引擎01
选择符 选择符是指CSS样式规则最左边的部分,例如 p{},#id{},.class{},p.class{} 等等 总共可以分为四大类: 并联选择器 => 逗号 => $('div,spa ...
- JS框架设计读书笔记之-小知识
这一篇写一点小知识 JS中0.1+0.2为什么不等于0.3? 关于这个问题之前也很疑虑,老师也只是笼统的讲这是JS的语言问题,但是内部具体的情况却没有讲,看了书才发现原理如此简单. 简单来讲,计算机识 ...
- JS框架设计读书笔记之-动画
基础概念 CSS样式可分为两种,一种值接近无限的集合(color,width),一种值只有几种(display),可以进行计算的样式,产生了动画效果.\ 1. 动画的第一步是获得元素的精确样式值. 2 ...
- JS框架设计读书笔记之-选择器引擎02
选择器引擎涉及相关概念 概念 以Sizzle的主函数声明为例,来说明引擎的相关概念. function Sizzle(selector, context, results, seed) { //... ...
- JS框架设计读书笔记之-异步
setTimeout/setInterval 1. 如果回调执行时间大于间隔时间,真正的间隔时间会大一些. 2. 存在一个最小的时间间隔,即使seTimeout(fn,0),在IE6-IE8中大概为1 ...
- JS框架设计读书笔记之-函数
这次写一些函数 1.模拟Object.keys方法 Object.keys = Object.keys || function(obj){ var a = []; // a[0],a[1]...分别赋 ...
- javascript框架设计(读书笔记)
我觉得多看几本进阶的书 与其十本书读一遍,不如一本书读十遍 读书的启示: 读好书(看推荐) 精读(重复看) 能读厚书(javascript权威指南) Object.keys Object.keys=O ...
- js框架设计1.1命名空间笔记
借到了司徒正美的写的js框架设计一书,司徒大神所著有些看不太懂,果然尚需循序渐进,稳扎js基础之中. 第一张开篇司徒阐述了种子模块的概念 种子模块亦为核心模块,框架最先执行模块,司徒见解应包含:对象扩 ...
随机推荐
- AngularJS中的DOM与事件
前 言 AngularJS中的DOM与事件 AngularJS 为 HTML DOM 元素的属性提供了绑定应用数据的指令. ng-disabled="true/false" ...
- CSV导出大量数据
$csvname = $csvname . '.csv'; header('Content-Type: application/vnd.ms-excel;charset=GB2312'); heade ...
- android studio集成ijkplayer
介绍 ijkplayer是一款非常火的开源视频播放器,android和IOS通用.关于怎么编译怎么导入android Studio中自己的项目,其中坑很多,本篇记录下自己的操作记录.ijkplayer ...
- java集合系列——List集合总结(六)
一.总结概述 List继承了Collection,是有序的列表. 实现类有ArrayList.LinkedList.Vector.Stack等 ArrayList是基于数组实现的,是一个数组队列.可以 ...
- TComboBox组件重要属性和事件
TComboBox组件的重要属性 CharCase--------此属性用于设置编辑框内文字的大小写 DropDownCount---此属性用于设置当用户下拉组合框时不需要加滚动条就能显示的项的个数 ...
- .NET十年回顾
一. 引子 从我还是编程菜鸟时起,.NET就从来没让我失望过.总是惊喜不断. 当年我第一个项目是做个进销存.用的Winform.当时我是机电工程师.编程只是业余心血来潮而已. .NET的低门槛.V ...
- Java公开课-01.类和对象
一,类和对象的含义 1.类:类是具有相同属性(静态特征)和行为(功能 )的一系列事物的集合. eg:以下俩者是不是类 1)汽车 √ 2)小胖桌子上那个红色的杯子 × 2.对象:被精确限定到一个特殊 ...
- C#下的两种加密方式MD5和DEC
md5加密 /// <summary> /// MD5加密 /// </summary> /// <param name="toCryStri ...
- 学习如何看懂SQL Server执行计划(一)——数据查询篇
一.数据查询部分 1. 看到执行计划有两种方式,对sql语句按Ctrl+L,或按Ctrl+M打开显示执行计划窗口每次执行sql都会显示出相应的执行计划 2. 执行计划的图表是从右向左看的 3. SQL ...
- Go语言备忘录:反射的原理与使用详解
目录: 预备知识 reflect.Typeof.reflect.ValueOf Value.Type 动态调用 通过反射可以修改原对象 实现类似“泛型”的功能 1.预备知识: Go的变量都是静态类 ...