• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Joan
博客园    首页    新随笔    联系   管理    订阅  订阅
setTimeout 和 setInterval区别及 对array数组的扩展

一:setTimeout 和 setInterval区别
window对象有两个主要的定时方法,分别是setTimeout 和 setInteval  他们的语法基本上相同,但是完成的功能取有区别。

  setTimeout方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。

  setInterval方法则是表示间隔一定时间反复执行某操作。

  如果用setTimeout实现setInerval的功能,就需要在执行的程序中再定时调用自己才行。如果要清除计数器需要 根据使用的方法不同,调用不同的清除方法:

例如:  tttt=setTimeout('northsnow()',1000);

     clearTimeout(tttt);

或者:

      tttt=setInterval('northsnow()',1000);

      clearInteval(tttt);

二:可以对其进行扩展

如:      Function.prototype.delay = function(time) { var timer = setTimeout(this, time); } //函数延迟time毫秒执行

     调用是 :check.delay(2000)

 

比如array没有contains,sort等,都可以写个扩展

   Array.prototype.sorts = function() { return this.sort(compare); } //数组排序,按照升序排序


         function compare(a, b) { return a - b; } //定义排序规则


         Array.prototype.removeAt = function(dx) { //清除指定索引的数组元素
        if (isNaN(dx) || dx > this.length) { return false; }
          for (var i = 0, n = 0; i < this.length; i++) {
            if (this[i] != this[dx])
              this[n++] = this[i];
            }
            this.length -= 1;
          }


        Array.prototype.filter = function() { //清除数组中的重复值
            var arr = [];
            for (var i = 0; i < this.length; i++) {
              if (!arr.contains(this[i]))
                arr.push(this[i]);
              }
              return arr;
            }


        Array.prototype.contains = function(item) { //检测数组是否包含某元素
          for (var i = 0; i < this.length; i++) {
            if (this[i] == item)
            return true;
            }
          return false;
            }

作者:Joan
出处:http://www.cnblogs.com/Joans/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted on 2010-12-23 10:45  Joans  阅读(643)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3