zoukankan      html  css  js  c++  java
  • 实现计数器和函数操作

    实现一个打点计时器,要求
    1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1
    2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作
    3、第一个数需要立即输出

    1.使用settimeout

    function count(start, end) {
        if(start<=end) {
            console.log(start++);
            timer = setTimeout(function() {
            count(start, end)},100);
        }
        return {
            cancel: function() {
                clearTimeout(timer);
            }
        }
    }

    2. 用setinterval

    function count(start, end) {
      //立即输出第一个值
      console.log(start++);
         var timer = setInterval(function(){
             if(start <= end){
                 console.log(start++);
             }else{
                 clearInterval(timer);
             }
         },100);
        //返回一个对象
         return {
             cancel : function(){
                 clearInterval(timer);
             }
         };
     }

    3. 将数组 arr 中的元素作为调用函数 fn 的参数

    function argsAsArray(fn, arr) {
      return fn.apply(fn, arr);
    }
    //或者
    function argsAsArray(fn, arr) {
      return fn.apply(this, arr);
    }
    显然这里用call ,非常不合理
    
    function argsAsArray(fn, arr) {
      return fn.call(fn, arr[0],arr[1],arr[2]);
    }
    //或者
    function argsAsArray(fn, arr) {
      return fn.call(this, arr[0],arr[1],arr[2]);
    }

    4. 将函数 fn 的执行上下文改为 obj 对象

    /三种方案
    //apply
    function speak(fn, obj) {
        return fn.apply(obj);
    }
    //call
    function speak(fn, obj) {
        return fn.call(obj);
    }
    //bind
    function speak(fn, obj) {
        return fn.bind(obj)();
    }
  • 相关阅读:
    设计模式之原型模式
    设计模式之建造者模式
    一个工厂还能写出花来?
    一个单例还能写出花来?
    python基础之条件循环语句
    python基础之七种运算符
    python基础之五大标准数据类型
    node.js express mvc轻量级框架实践
    js Date() 浏览器兼容问题解决
    js 倒计时(服务器时间同步)
  • 原文地址:https://www.cnblogs.com/sarah-wen/p/10767008.html
Copyright © 2011-2022 走看看