《JavaScript高等程序设计》22章 JavaScript高等用法

1、惰性加载函数 (推断各个浏览器中是不是支撑某个属性)

function addEvent(elem, type, handler){
    if(elem.addEventListener){
        return function(elem, type, handler){
            elem.addEventListener(type, handler, false);
        }
    }else if(elem.attachEvent){
        return function(elem, type, handler){
            elem.attachEvent("on"+type, handler);
        }
    }
}

如许誊写代码,函数只会在第一次实行的时刻去做搜检,今后每一次都自动实行肯定的函数操纵。
2、函数绑定和函数柯里化
函数绑定能够让函数在指定的环境中实行某一段代码;函数柯里化能够让函数在任何情况下通报任何数目的参数去实行。

函数绑定

function bind(fn, context, args){
    return function(args){
        fn.call(context, args);
    }
}

函数柯里化

function curry(fn){
    var args = Array.prototype.slice.call(arguments, 1);
    return function(){
    var innerArgs = Array.prototype.slice.call(arguments);
    var finalArgs = args.concat(innerArgs);
    return fn.apply(null, finalArgs);    
    };
}

函数柯里化重要处理的问题是,已有的接口不适合我们当前的操纵环境,须要对已有的接口举行响应的转换才能够运用。

ECMAScript 5许可经由过程以下几种体式格局来建立防改动对象。

•不可扩大的对象,不许可给对象增加新的属性或要领。
•密封的对象,也是不可扩大的对象,不许可删除已有的属性和要领。
•凝结的对象,也是密封的对象,不许可重写对象的成员。

setTimeout和setInterval

setTimeout的定义是指若干时候以后将回调函数到场到js的实行行列当中;回调函数是不是马上实行取决于当前的实行行列是不是余暇。比较好的例子以下:

elem.on("click", function(event){
    setTimeout(function(){
        //回调函数
    }, 400);
    //实行其他click操纵
})

如果click内部的实行时候为500,那末setTimeout的回调函数最少要守候500ms才实行。

setTnterval是反复定时器。它只许可当前js实行行列中有一个雷同的回调函数在实行,比如说时候距离为200ms,然则回调函数的实行时候为404,那末当第二个回调函数要到场到实行行列中时,发明第一个回调函数在实行,那末第二个回调函数不会到场到实行行列中。

自定义事宜

详细完成体式格局:每个绑定自定义事宜时,给每个事宜范例加对应的回调函数数组;每一次触发自定义事宜时,将对应的回调函数数组里的回调函数挨个实行一次。

拖拽
运用的事宜范例未mouseenter、mousemove、mouseleave事宜。须要斟酌offsetX和offsetY的值。能够到场自定义事宜来拓展(“dragstart”、”drag”、”dragend”)。

    原文作者:XIAOYI
    原文地址: https://segmentfault.com/a/1190000002939252
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞