function Lazyman(name) { console.log('HI! this is ' + name); this.task = []; setTimeout(function() { var fn = this.task.shift(); fn() }.bind(this)) } Lazyman.prototype = { constructor : Lazyman, next() { var fn = this.task.shift(); fn && fn(); }, eat(food) { var self = this; var fn = function eat() { console.log('eat ' + food); self.next(); }; this.task.push(fn); return this; }, sleep(second) { var self = this; var fn = function sleep() { console.log("Wake up after " + second + "s!"); setTimeout(function() { self.next(); },second * 1000); }; this.task.push(fn); return this; }, sleepFirst(second) { var self = this; var fn = function sleepFirst() { console.log("sleepFirst Wake up after " + second + "s!"); setTimeout(function () { self.next(); },second * 1000); }; this.task.unshift(fn); return this; } }; new Lazyman('kodo').sleep(3).eat('b').sleepFirst(2).sleep(4).eat('c'); 打开控制台查看