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');

	打开控制台查看