博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lazyMan
阅读量:7069 次
发布时间:2019-06-28

本文共 1648 字,大约阅读时间需要 5 分钟。

题目

实现一个LazyMan,可以按照以下方式调用:

LazyMan(“Hank”)输出:
Hi! This is Hank!
LazyMan(“Hank”).sleep(10).eat(“dinner”)输出
Hi! This is Hank!
//等待10秒..
Wake up after 10
Eat dinner~
LazyMan(“Hank”).eat(“dinner”).eat(“supper”)输出
Hi This is Hank!
Eat dinner~
Eat supper~
LazyMan(“Hank”).sleepFirst(5).eat(“supper”)输出
//等待5秒
Wake up after 5
Hi This is Hank!
Eat supper
以此类推。

简单实现

function lazyman(name) {    return new lazyman.fn.init(name);}lazyman.fn = lazyman.prototype = {    construct: lazyman,    stack: null,    status: 0,    init: function (name) {        this.name = name;        this.stack = [];        return this;    },    sleep: function (time) {        var that = this;        time = +time;        if(time !== time) {            this.next();        } else if(this.status) {            this.stack.unshift(this.sleep.bind(this, time));        } else {            this.status = 1;            this.print(`sleeping ${time} seconds...`);            setTimeout(function () {                that.status = 0;                that.next();            }, time * 1000);        }        return this;    },    next: function () {        while(this.status == 0 && this.stack.length) {            this.print(                this.stack.pop()()            );        }        return this;    },    eat: function(thing) {        this.stack.unshift(lazyEat.bind(null, this.name, thing));        if(this.status == 0) {            this.next();        }        return this;    },    print: console.log}lazyman.fn.init.prototype = lazyman.fn;function lazyEat(name, thing) {    return `${name} eat ${thing}`;}module.exports = lazyman;

转载于:https://www.cnblogs.com/ende93/p/6296083.html

你可能感兴趣的文章
Powershell通过变量、数组批量添加DHCP保留地址
查看>>
引导过程和服务控制
查看>>
拖拽即可创建HTML5网站的建站平台
查看>>
我的友情链接
查看>>
mod_fastcgi和mod_fcgid的区别
查看>>
Delphi字节位操作
查看>>
百兆、千兆网线的做法
查看>>
cisco 10条IOS管理命令
查看>>
文娱产业兴起 娱乐有了 文化在哪?
查看>>
Inotifywait解决监控子目录树的情况
查看>>
两棵树是否相同
查看>>
基本正则表达式和扩展正则表达式中的括号问题
查看>>
saltstack与docker结合构建高可用和自动发现服务
查看>>
SCCM2012R2部署之四:中心站点的部署
查看>>
【答疑解惑】Java类的加载顺序
查看>>
严重 catalina.stop java.net.connectexception connection refused connect
查看>>
ETH-TRUNK
查看>>
Tomcat应用与部署(二)
查看>>
javascript函数的声明、调用、传参和返回值
查看>>
关于布局中float的常见问题及解决办法
查看>>