實現計數器和函數操做

實現一個打點計時器,要求
一、從 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)(); }
相關文章
相關標籤/搜索