第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的链式结构。
时间: 2024-10-23 03:44:25