实现计数器和函数操做

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

1.使用settimeoutapp

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 的参数this

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 对象spa

/三种方案
//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)(); }
相关文章
相关标签/搜索