zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    数据加密算法详解
    自定义标签+阻尼动画+圆角图片+titleBar随滑动渐隐和显示
    Android MVP Plugin,一键完成MVP结构代码编写
    jquery-validate校验
    C# 后台获取请求来源、文件下载
    【通用邮件发送】C# QQ 网易邮箱
    【asp.net mvc】 扩展 htmlhelper 实现分页
    在MVC5中使用Ninject 依赖注入
    c# txt 文件上传、写入TXT文件、创建图形验证码
    uploadify图片上传配置
  • 原文地址:https://www.cnblogs.com/zczhangcui/p/6207291.html
Copyright © 2011-2022 走看看