實現函數LazyMan,使得:函數
LazyMan('Hank'); 輸出
Hi Hank!this
LazyMan('Hank').eat('dinner');輸出
Hi Hank!
Eat dinner!prototype
LazyMan('Hank').sleep(5).eat('dinner'); 輸出
Hi Hank!
//等待五秒
Eat dinner!code
LazyMan('Hank').sleepFirst(5).eat('dinner');輸出
//等待五秒
Hi Hank!
Eat dinner!it
實現代碼:io
function LazyMan(name) { lp.taskList.push('Hi ' + name + '!'); return lp.exe(); } var lp = LazyMan.prototype; lp.taskList = []; lp.eat = function(v) { lp.taskList.push('Eat ' + v + '!'); return lp.exe(); } lp.sleep = function(t) { lp.taskList.push('sleep ' + t); return lp.exe(); } lp.sleepFirst = function(t) { lp.taskList.unshift('sleep ' + t); return lp.exe(); } lp.taskStart = false; lp.exe = function() { var that = this; if(!lp.taskStart) { lp.taskStart = true; setTimeout(function() { doTask(lp.taskList); that.taskList = []; }, 0); } return lp; } function doTask(taskList) { if(taskList.length) { var task = taskList.shift(); if(task.indexOf('sleep') !== -1) { var match = task.split(' '); var t = parseInt(match[1]); setTimeout(function(){ doTask(taskList); }, t * 1000); } else { console.log(task); doTask(taskList); } } } // LazyMan('Hank'); // LazyMan('Hank').eat('dinner'); // LazyMan('Hank').sleep(5).eat('dinner'); LazyMan('Hank').sleepFirst(5).eat('dinner');