美文网首页让前端飞Web前端之路
第二十二章 高级技巧

第二十二章 高级技巧

作者: 张果果 | 来源:发表于2017-07-11 22:40 被阅读34次

1. 作用域安全的构造函数:在进行任何更改前,首先确认this对象是正确类型的实例(锁定可以使用构造函数的环境,避免在全局对象上意外设置属性)。


2. 函数的惰性载入:函数执行的分支仅会发生一次。

    实现惰性载入的两种方式:

① 在函数被调用时再处理函数。在第一次调用的过程中,该函数被覆盖为另一个按合适方式执行的函数,这样任何对原函数的调用都不用再经过分支

② 在声明函数时就指定适当的函数


3. 函数柯里化:把接受多个参数的函数变换成为接受一个参数的函数,并且返回接受余下参数而且返回结果的新函数的技术。

function curry(fn){  //  fn为要进行柯里化的函数

        var args = Array.prototype.slice.call(arguments, 1);   //  args包含了来自于fn函数外部的参数

        return function(){

                var innerArgs = Array.prototype.slice.call(arguments);  //  innerArgs包含了来自于fn函数内部的参数

                var finialArgs = args.concat(innerArgs);

                return fn.apply(null, finalArgs);

        }

}


3. 柯里化函数动态创建步骤:调用另一个函数并为它传入要柯里化的函数和必要的参数


4. 定时器中( setTimeout() 和 setInterval() ),指定的时间间隔表示何时将定时器的代码添加到队列,而不是何时实际执行代码。


5. 数组分块基本原理:为要处理的项目创建一个队列,然后使用定时器取出下一个要处理的项目进行处理,接着再设置另一个定时器。其基本的模式:

function chunk(array, proccess, context){

        setTimeout(function(){

                var item = array.shift();

                process.call(context, item);

                if(array.length > 0){

                         setTimeout(arguments.callee, 100);

                }

        }, 100);

}


6. 函数节流基本原理:某些代码不可以在没有间断的情况连续重复执行。第一次调用函数时,创建一个定时器,在指定的时间间隔之后运行代码;第二次调用该函数时,它会清除前一次的定时器并设置另一个。在resize事件中最常用。其基本模式:

function throttle(method, context){ // method为要执行的函数,context为函数执行的作用域

        clearTimeout(method.tId);

        method.tId = setTimeout(function(){ // 创建一个定时器,并将其ID存储于方法的 tId 属性中

                method.call(context);

        }, 100);

}

相关文章

  • javascript高级程序设计(第22章)-- 高级技巧

    第二十二章:高级技巧 本章内容: 使用高阶函数 防篡改对象 Yieding Timers 22.1 高级函数 22...

  • 第二十二章 高级技巧

    1. 作用域安全的构造函数:在进行任何更改前,首先确认this对象是正确类型的实例(锁定可以使用构造函数的环境,避...

  • iOS核心动画高级技巧 - 8

    iOS核心动画高级技巧 - 1iOS核心动画高级技巧 - 2iOS核心动画高级技巧 - 3iOS核心动画高级技巧 ...

  • 正则表达式

    JS高级技巧 本篇是看的《JS高级程序设计》第23章《高级技巧》做的读书分享。本篇按照书里的思路根据自己的理解和经...

  • Python中的一些高级技巧

    Python中的一些高级技巧 Python 开发中有哪些高级技巧?这是知乎上一个问题,我总结了一些常见的技巧在这里...

  • 高级技巧

    不可拓展对象: preventExtensions(想要禁止拓展的对象):这个是Object的静态方法,它可以用于...

  • 高级技巧

    全局获取Context 使用Intent传递对象 定制自己的日志工具 创建定时任务

  • 高级技巧

    本章内容:使用高级函数、防篡改对象、Yielding with Timers JavaScript 是一种极其灵活...

  • 高级开发必会高效Java

    高级开发起码得会些高级技巧吧?那这些高级技巧从哪里取得呢? 第一种方式肯定是读书,什么?你没那么多时间? 幸好,我...

  • iOS核心动画高级技巧(笔记)——(一)图层树 、寄宿图

    说明:所有的iOS核心动画高级技巧(笔记)都是读书笔记,原文请戳iOS核心动画高级技巧 图层树 在iOS当中,所有...

网友评论

    本文标题:第二十二章 高级技巧

    本文链接:https://www.haomeiwen.com/subject/osnuhxtx.html