资讯专栏INFORMATION COLUMN

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

wanglu1209 / 1702人阅读

摘要:和的定义是指多少时间之后将回调函数加入到的执行队列之中回调函数是否立即执行取决于当前的执行队列是否空闲。比较好的例子如下回调函数执行其他操作假如内部的执行时间为那么的回调函数至少要等待才执行。

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")。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/85774.html

相关文章

  • 如何正确学习JavaScript

    摘要:然而,虽然先生对无所不知,被誉为世界的爱因斯坦,但他的语言精粹并不适合初学者学习。即便如此,在后面我还是会建议把当做补充的学习资源。但目前为止,依然是学习编程的好帮手。周正则表达式,对象,事件,阅读权威指南第,,,章。 既然你找到这篇文章来,说明你是真心想学好JavaScript的。你没有想错,当今如果要开发现代网站或web应用(包括互联网创业),都要学会JavaScript。而面对泛...

    canger 评论0 收藏0
  • 如何阅读《JavaScript高级程序设计》(一)

    摘要:题外话最近在看高级程序设计这本书,面对着多页的厚书籍,心里有点压力,所以我决定梳理一下。。全局环境的关闭是页面关闭或者浏览器关闭,而局部环境的关闭是指函数结束。数值范围最大和最小的范围是超出范围的数字如何表示是一个特殊的值。 题外话 最近在看《JavaScript高级程序设计》这本书,面对着700多页的厚书籍,心里有点压力,所以我决定梳理一下。。探究一下到底怎么读这本书。本书的内容好像...

    chadLi 评论0 收藏0
  • 如何阅读《JavaScript高级程序设计》(一)

    摘要:题外话最近在看高级程序设计这本书,面对着多页的厚书籍,心里有点压力,所以我决定梳理一下。。全局环境的关闭是页面关闭或者浏览器关闭,而局部环境的关闭是指函数结束。数值范围最大和最小的范围是超出范围的数字如何表示是一个特殊的值。 题外话 最近在看《JavaScript高级程序设计》这本书,面对着700多页的厚书籍,心里有点压力,所以我决定梳理一下。。探究一下到底怎么读这本书。本书的内容好像...

    jubincn 评论0 收藏0
  • 如何阅读《JavaScript高级程序设计》(一)

    摘要:题外话最近在看高级程序设计这本书,面对着多页的厚书籍,心里有点压力,所以我决定梳理一下。。全局环境的关闭是页面关闭或者浏览器关闭,而局部环境的关闭是指函数结束。数值范围最大和最小的范围是超出范围的数字如何表示是一个特殊的值。 题外话 最近在看《JavaScript高级程序设计》这本书,面对着700多页的厚书籍,心里有点压力,所以我决定梳理一下。。探究一下到底怎么读这本书。本书的内容好像...

    libin19890520 评论0 收藏0
  • [译] 如何恰当地学习 JavaScript

    摘要:原文链接恰当地学习适合第一次编程和非的程序员持续时间到周前提无需编程经验继续下面的课程。如果你没有足够的时间在周内完成全部的章节,学习时间尽力不要超过周。你还不是一个绝地武士,必须持续使用你最新学到的知识和技能,尽可能地经常持续学习和提高。 原文链接:How to Learn JavaScript Properly 恰当地学习 JavaScript (适合第一次编程和非 JavaSc...

    Jason 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<