第二十二章 高级技巧
2015-11-15 21:40:12 0 举报
AI智能生成
第二十二章的高级技巧,如同璀璨的繁星点缀在黑夜的天空中,引领着探索者走向未知的深渊。这些技巧不仅仅是简单的知识积累,更是对基础理论的深入理解和实践应用的升华。它们需要时间、耐心和不断的实践来磨练,每一次的进步都是对自我挑战的胜利。在这个过程中,你可能会遇到困难,甚至有时会感到迷茫,但请记住,只有经历过黑暗的人,才能更加珍惜光明。所以,不要害怕失败,不要畏惧挑战,因为这些都是通往成功的必经之路。只要你坚持不懈,终有一天,你会站在那座山峰之巅,俯瞰整个世界。
作者其他创作
大纲/内容
高级函数
安全的类型检测
在值上调用Object原生的toString(),与原生对象的构造函数比较
作用域安全的构造函数
在进行更改前,先确认this对象是正确类型的实例,若不是,则会创建新的实例
惰性载入函数
表示函数执行的分支仅会发生一次,优点是只在执行分支代码时牺牲一点性能
两种方式
1. 在函数被调用时再处理函数
2. 在声明函数时就指定适当的函数
函数绑定
该技巧常和回调函数与事件处理程序一起使用,以便在将函数作为变量传递的同时保留代码执行环境
函数柯里化
用于创建已经设置好了一个或多个参数的函数
基本方法:使用一个闭包返回一个函数
与函数绑定不同点:当函数被调用时,返回的函数需设置一些传入的参数
防篡改对象
不可扩展对象
一般对象都是可扩展的,即任何时候都可以向对象中添加属性和方法
Object.preventExtensions()
调用该方法后,不能再给对象添加属性和方法
在非严格模式下,给不可扩展的对象添加属性/方法会导致静默失败
在严格模式下,给不可扩展的对象添加属性/方法会抛出错误
Object.isExtensible()
该方法用来判断对象是否可扩展,不可扩展则返回 false
密封的对象
密封对象不可扩展,不能删除属性和方法,属性值是可以修改的
Object.seal()
该方法用来密封对象
Object.isSealed()
该方法可确定对象是否被密封了,被密封了则返回true
冻结的对象
冻结的对象既不可扩展,又是密封的,对象数据属性的[[Writable]]特性会被设置为false
Object.freeze()
该方法用于冻结对象
Object.isFrozen()
该方法用于检测冻结对象,冻结则返回false
对JavaScript库而言,冻结对象作用很大,冻结主要的库对象能够防止修改库中的核心对象
注:一旦把对象定义为防篡改,就会无法撤销
高级定时器
重点:指定的时间间隔表示何时将定时器的代码添加到队列,而不是何时实际执行代码
重复定时器
setInterval()缺点
1. 某些间隔会被跳过
2. 多个定时器的代码执行之间的间隔可能会比预期的小
setTimeout()链式调用
优点:在前一个定时器代码执行完之前,不会向队列插入新定时器代码,避免连续运行
Yielding Processes
数组分块可将多个项目的处理在执行队列上分开,避免长时间运行脚本的错误
函数节流
基本思想:某些代码不可以在没有间断的情况连续重复执行
方法:第一次调用函数,创建一个定时器,在指定时间间隔后执行代码;第二次调用该函数,清除前一次的定时器并设置另一个
自定义事件
基本概念:创建一个管理事件的对象,让其他对象监听那些事件
拖放
基本概念:创建一个绝对定位的元素,使其可以用鼠标移动
0 条评论
下一页