js-JavaScript高级程序设计学习笔记19
第22章 高级技巧
1、高级函数
1、安全的类型检测。
typeof,instanceof并非完全可靠。
安全的类型检测:使用Object原生的toString()方法。
function isArray(value){
return Object.prototype.toString.call(value)=="[object Array]";
}2、作用域安全的构造函数
构造函数内部使用instanceof检查this是否是正确类型的实例。防止属性被加到window对象上。
3、惰性载入函数
作用:多次调用时,避免重复执行能力检测。
方式:①在能力检测后修改函数并返回新函数。②声明函数时创建自执行匿名函数。
4、函数绑定
bind()方法,传入作为this值的对象。返回的是一个函数,call和apply都是对函数的直接调用。
主要用于事件处理程序以及setTimeout()和setInterval()。需要更多的开销。
5、函数柯里化
基本方法:使用一个闭包返回一个函数。
2、防篡改对象
一旦把对象定义为防篡改,就无法撤销了。
1、不可扩展对象
var person={name:"ABC"};
Object.preventExtensions(person);调用Object.preventExtensions(person)后不能给person对象添加新属性和方法了,但是可以修改和删除已有的成员。使用Object.isExtensible()可以确定对象是否可以扩展。
2、密封的对象
密封对象不可扩展,不可删除,但是可以修改。
Object.seal()
Object.isSealed()
3、冻结的对象
不可扩展,密封,只有定义[[Set]]函数才可写。
Object.freeze()
Object.isFrozen()
3、高级定时器
定时器对队列的工作方式是,当特定的时间过去后将代码插入,但不意外着它立刻执行,而是表示它会尽快执行。
1、重复的定时器
为避免setInterval出现跳过代码的情况,可以使用setTimeout嵌套setTimeout的链式结构。
2、Yielding Processes
运行在浏览器中的JS都被分配了一个确定数量的资源。如果代码运行超过特定的时间或者特定语句数量,就不会继续执行。
数组分块技术:为要处理的项目创建一个队列,然后使用定时器取出下一个要处理的项目进行处理,接着再设置另一个定时器。
一旦某个函数需要花50ms以上的时间完成,那么最好看看能否将任务分割为一系列可以使用定时器的小任务。
3、函数节流
对高频率周期性执行的代码设置间隔,防止消耗过多的资源。
4、自定义事件P616
5、拖放P622
js-JavaScript高级程序设计学习笔记19的更多相关文章
- JavaScript高级程序设计---学习笔记(一)
今天,2017.3.17开始利用课余时间仔细学习<JavaScript高级程序设计>,将需要掌握的知识点记录下来,争取把书里的所有代码敲一遍并掌握. 1.标识符命名最好是第一个字母小写,剩 ...
- javascript高级程序设计学习笔记
javascript高级程序设计,当枕头书已经好久了~zz 现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...
- javascript 高级程序设计 学习笔记
<!--<script> // 异步请求封装 IE6即以上浏览器 // ajax(url,fnSucc,selectID,fnFaild) //url 请求地址 //fnSucc 异 ...
- JavaScript高级程序设计---学习笔记(二)
面向对象程序设计1.属性类型.定义多属性.读取属性特性对象的属性在创建时都带有一些特征值,JavaScript通过这些特征值来定义它们的行为.这些特性是为了实现JavaScript引擎用的,因此不能直 ...
- JavaScript高级程序设计学习笔记--DOM
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序接口). Document类型 文档的子节点 虽然DOM标准规定Document节点的子节点可以是DocumentType,Ele ...
- Javascript高级程序设计学习笔记一
看完w3school的javascript的概念,有点基础,开始红皮书的路程,今晚总结前二章的心得. 第一章:javascript简介 重点是javascript的实现是由 ECMAScript(核心 ...
- JavaScript高级程序设计学习笔记--面向对象的程序设计(二)-- 继承
相关文章: 面向对象的程序设计(一) — 创建对象 http://www.cnblogs.com/blackwood/archive/2013/04/24/3039523.html 继承 继承是OO语 ...
- JavaScript高级程序设计学习笔记第十章--DOM
1.DOM:文档对象模型,是针对 HTML 和 XML 文档的一个 API(应用程序编程接口). 2.DOM 可以将任何 HTML 或 XML 文档描绘成一个由多层节点构成的结构. 3.文档节点是每个 ...
- JavaScript高级程序设计学习笔记第一章
作为学习javascript的小白,为了督促自己读书,写下自己在读书时的提炼的关键点. 第一章: 1.JavaScript简史:Netscape Navigator中的JavaScript与Inter ...
随机推荐
- JVM-操作码助记符
整理如下,用于以后查找: Opcode Mnemonics Note Constants 0x00 nop 无动作 0x01 aconst_null 把 null 推到操作数栈 0x02 iconst ...
- [AlwaysOn Availability Groups]CLUSTER.LOG(AG)
CLUSTER.LOG(AG) 作为故障转移资源,在SQL Server和windows故障转移集群服务的资源DLL(hadrres.dll)之间有额外的内部交流,DLL无法被SQL Server监控 ...
- leveldb源码分析--SSTable之Compaction
对于compaction是leveldb中体量最大的一部分,也应该是最为复杂的部分,为了便于理解我们首先从一些基本的概念开始.下面是一些从doc/impl.html中翻译和整理的内容: Level 0 ...
- 通过重构VO实现校验功能
现有个需求,需要添加供应商的页面校验功能,当填写一二级时,供应商是必填项,并且所填的供应商必须是二级分类下的,否则下一步和保存过不去: 解决方案: 1.在页面AM的XXXImpl.java中, 加入引 ...
- hive建表与数据的导入导出
建表: create EXTERNAL table tabtext(IMSI string,MDN string,MEID string,NAI string,DestinationIP string ...
- Redis学习资源
1 redis官方网站 http://redis.io/ 2 redis中文 http://redisdoc.com/ 3 redis的设计与实现 http://www.redisbook.com/ ...
- WPF系列 Style
参考 WPF: Customize your Application with Styles and Control Templates (Part 2 of 2)
- OAuth协议——PHP第三方登陆协议
慕课网Badguy老师的良心课程! 总会有那种什么都不想干的时候,但现在的日子又不这么允许个人的放纵,我一般就只有这几个选择:看课程视频,看书,看小说..好像还是有可以做的事情.其中,看课程视频有点无 ...
- springboot Serving Web Content with Spring MVC
Serving Web Content with Spring MVC This guide walks you through the process of creating a "hel ...
- 苹果iOS强制HTTPS迫在眉睫,距离2017年只剩1天,准备好了么?
其实不久前苹果就发了通告,要求ios上的应用全部以HTTPS来进行接口调用以及数据访问,这样做是为了数据安全,一方面为了自己,另一方面也是对应用的要求更加严格,这么做很好,也加强了市场app的规范,虽 ...