随笔分类 - 前端书籍阅读笔记
摘要:为了将值转换为基本类型值(string,number,boolean,null,undefined),抽象操作ToPrimitive会首先检查该值有没有valueOf()方法,如果有并且返回基本类型值,那么使用该值进行强制类型转换,如果没有就使用toString()的返回值进行强制类型转换。如果va
阅读全文
摘要:在实际开发中,很多时候需要知道某个节点是不是另一个节点的后代。很多浏览器提供了contains方法,如: DOM3提供的compareDocumentPosition方法也可以判断元素位置关系,结果如下: 1 无关 2 居前 4 居后 8 包含 16 被包含 因此跨浏览器的contains写法如下:
阅读全文
摘要:表单元素除了可以运用上述所有DOM相关操作外,为了简化,还有一系列自己的属性和方法。 表单除了支持鼠标,键盘,更改和html时间之外,还支持一些表单特有的事件,如focus,change,blur等等。 一、form表单元素 1.获取表单上的form元素 1)document.getElementB
阅读全文
摘要:浏览器对象模型BOM,提供了访问浏览器的接口。这些功能大多和网页内容无关,多年来,由于缺乏规范导致BOM中的不同方法在不同浏览器中的实现有所差异,直到html5,才将BOM的主要方面纳入规范。 BOM常用的特性包括: 一、window对象 window对象在浏览器中具有双重角色:它既是ECMAscr
阅读全文
摘要:javascript中,Date代表日期对象,其常见的用法如下: 一、Date的构造函数 有四种形式的Date构造函数,详见下面代码的注释: 二、返回日期对应的毫秒数 1.Date.parse() Date.parse()接收一个日期字符串,返回该日期对应的毫秒数。 2.Date.UTC() Dat
阅读全文
摘要:一个完整的javascript的实现应当由三部分构成: 1.核心(ECMAscript) ECMAscript与web浏览器并没有依赖关系,web浏览器只是ECMAscript实现可能的宿主环境之一,宿主环境不仅提供ECMAscript实现,也提供该语言的扩展。其他宿主环境包括nodeJs等。ECM
阅读全文
摘要:一、transform css3引入了一些可以对网页元素进行变换的属性,比如旋转,缩放,移动,或者沿着水平或者垂直方向扭曲(斜切变换)等等。这些的基础都是transform属性 transform属性有一项奇怪的特性,就是它们对于其周围的元素不会产生影响。换句话说,如果将一个元素旋转45度,它实际上
阅读全文
摘要:响应式布局结合了三大理念: 1)用于布局的弹性网络(百分比定义宽度) 2)用于图片和视频的弹性媒体 3)媒体查询 在布局中,需要注意的点有: 1)尽量用min-width/max-width,max-height/min-height代替width,height 2)尽量使用百分比,em为单位代替精
阅读全文
摘要:一、高性能网站 《高性能网站建设指南》一书中提出用户只有10%-20%最终用户响应时间是花在从web服务器获取html文档并传送到浏览器中,80%的时间都花在了等待页面组件中,由此提出了构建高性能网站的14个规则。按照优先级排序依次是: 1.减少http请求数 直接方法是减少组件的个数,由此来减少h
阅读全文
摘要:一、javascript中的属性、方法 1.首先,关于javascript中的函数/“方法”,说明两点: 1)如果访问的对象属性是一个函数,有些开发者容易认为该函数属于这个对象,因此把“属性访问”叫做“方法访问”,而实际上,函数永远不会属于一个对象,对象拥有的,只是函数的引用。确实,有些函数体内部使
阅读全文
摘要:一、前言 闭包是基于词法作用域( 和动态作用域对应,词法作用域是由你写代码时,将变量写在哪里来决定的,因此当词法分析器处理代码时,会保持作用)书写代码时所产生的自然结果,甚至不需要为了利用闭包而有意地创建闭包。闭包的创建和使用在动态语言的代码中随处可见。你缺少的只是识别,拥抱和使用闭包的思维。 当函
阅读全文
摘要:一、前言 关于正则表达式自身的语法这里不做过多介绍(详情可参见http://www.php100.com/manual/unze.html),这里仅仅解释javascript中和正则表达式相关的几个方法的使用(http://www.w3school.com.cn/jsref/jsref_obj_re
阅读全文
摘要:一、javascript中的假值 jQuery中拥有一组数量奇大的假值,包括 0,NaN(非数),''(空字符串),false,null,undefined 这些值在if判断中全部等于假,但这些值彼此是不==的。注意空数组[],空对象{}在if判断中是为真的。 二、javascript中的数据类型
阅读全文
摘要:一、编程设计原则 1)单一职责原则(SRP): 这里的职责是指“引起变化的原因”;单一职责原则体现为:一个对象(方法)只做一件事。 事实上,未必要在任何时候都一成不变地遵守原则,实际开发中,因为种种原因违反SRP的情况并不少见,比如jQuery中的attr方法,既负责赋值,又负责取值。这对于jQue
阅读全文
摘要:一、状态模式的定义 状态模式的关键是区分事务内部和外部的状态,事务内部状态改变往往会带来事务的行为改变。 状态模式中有意思的一点是,一般我们谈到封装,都是优先封装对象的行为,而非对象的状态。但在状态模式中刚好相反,状态模式的关键是把事务的每种状态都封装为单独的类,跟此种状态有关的行为都封装在这个类的
阅读全文
摘要:一、装饰者模式定义 装饰者模式可以动态地给某个对象添加一些额外的职责,而不会影响从这个类中派生的其他对象。这种为对象动态添加职责的方式就称为装饰者模式。装饰者对象和它所装饰的对象拥有一致的接口,对于用户来说是透明的。 和java等语言不同的是,java的装饰器模式是给对象动态添加职责,javascr
阅读全文
摘要:一、中介者模式的定义和应用场景 中介者模式的作用在于解除对象之间的紧耦合关系,增加一个中介者之后,所有对象都通过中介者来通信,而不是互相引用,当一个对象发生变化的时候,仅需要通知中介者即可。从而将网状的多对多关系转换为了简单的一对多关系。 中介者模式使得各个对象之间得以解耦,以中介者和对象之间一对多
阅读全文
摘要:一、职责链的定义和使用场景 职责链模式的定义是,职责链模式将一系列可能会处理请求的对象连接成一条链,请求在这些对象之间一次传递,直到遇到一个可以处理它的对象。从而避免请求的发送者和接收者之间的耦合关系。 职责链模式的优点是:请求发送者只需要直到链中的第一个节点,从而解耦了发送者和一组接收者之间的强联
阅读全文
摘要:一、享元模式的定义及使用场景 享元模式是为了解决性能问题而诞生的设计模式,这和大部分设计模式为了提高程序复用性的原因不太一样,如果系统中因为创建了大量类似对象而导致内存占用过高,享元模式就非常有用了。 享元模式的关键是区分内部状态和外部状态,剥离了外部状态的对象成为共享对象。有多少种内部状态的组合,
阅读全文
摘要:一、组合模式定义及使用场景 组合模式将对象组合成树形结构,用以表示“部分—整体”的层次结构,除了用来表示树形结构之外,组合模式还可以利用对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性。 实现组合模式的关键: 在java等静态语言中,需要单个对象和组合对象都实现同样的抽象接口,对外提供
阅读全文