俊哥的blog的一道题
题目:
实现一个person对象,有eat和dinner两种方法
请用实例【依次类推】
new person('Tom').sleep(10).eat('dinner');
//输出 console.log("hello Tom");
//等待10s后输出
console.log("sleep 10s");
console.log("eat dinner");
看似是实现一个对象上面方法的链式调用(一般都是在前一个方法的调用,该题目的sleep的调用,return this);然后就可以进行链式调用。先来一个没有等待时间的链式调用,如下:
var person = function(name){
this.name = name;
console.log(`hello ${name}`);
this.sleep = function(time){
console.log(`no sleep`);
return this;
}
this.eat = function(food){
console.log(`eat ${food}`);
}
}
new person("Tom").sleep(10).eat("dinner");
Thus,要在sleep的方法里面实现等待10s后进行输出肯定是要有一个延迟,该延迟完成后方可继续eat的执行,因此可以利用ES6的promise,给该对象加入一个新的promise属性,在sleep里面进行赋值并返回,在eat方法中进行promise.then对象的调用。代码如下:
var person = function(name){
this.name = name;
console.log(`hello ${name}`);
}
person.prototype.sleep = function(time){
this.promise = new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log(`sleep ${time}s`);
resolve();
},time*1000);
})
return this;
}
person.prototype.eat = function(food){
this.promise.then(res=>{
console.log(`eat ${food}`);
})
}
new person("Tom").sleep(10).eat("dinner");
//即可实现原题的返回结果
其实这道题最开始可以使用回调函数方法实现,只不过原理大致相同,主要还是在sleep方法里面加入了一个属性方法,在eat方法里面延迟sleep的属性方法,进行返回。
var person = function(name){
this.name = name;
console.log(`hello ${this.name}`);
}
person.prototype.sleep = function(time){
var _self = this;
this.cb = function(fn){
setTimeout(function(){
console.log(`sleep ${time}s`);
fn()
},1000*time)
}
return this;
}
person.prototype.eat = function(food){
this.cb(function(){
console.log(`eat ${food}`);
})
return this;
}
new person('Tom').sleep(10).eat('dinner');
【完】
“须菩提,于意云何?可以身相见如来不?”
“不也,世尊。不可以身相得见如来。何以故?如来所说身相,即非身相。”
佛告须菩提:“凡所有相,皆是虚妄。若见诸相非相,即见如来。”
俊哥的blog的一道题的更多相关文章
- BZOJ-3211花神游历各国 并查集+树状数组
一开始想写线段树区间开方,简单暴力下,但觉得变成复杂度稍高,懒惰了,编了个复杂度简单的 3211: 花神游历各国 Time Limit: 5 Sec Memory Limit: 128 MB Subm ...
- 在html中怎么格式化输出json字符串
#今天的项目用到,看俊哥找到,特此记录下来 步骤: 1.在html页面中输入下面的标签,必须是在pre标签内输出格式才会生效: <pre id="songReqJson"&g ...
- 51nod1524 最大子段和V2
题干 N个整数组成的序列a[1],a[2],a[3],-,a[n],你可以对数组中的一对元素进行交换,并且交换后求a[1]至a[n]的最大子段和,所能得到的结果是所有交换中最大的.当所给的整数均为负数 ...
- JavaScript 笔记 ( Prototype )
这阵子实在好忙 ( 这样说好像也不是一两个月了... ),然后因为工作伙伴都是 JavaScript 神之等级的工程师,从中也学到不少知识,毕竟就是要和强者工作才会成长呀!为了想好好瞭解他们写的程式码 ...
- 【BZOJ】【1061】【NOI2008】志愿者招募
网络流/费用流 OrzOrzOrz,这题太神了不会捉. 题解:https://www.byvoid.com/blog/noi-2008-employee/ 这道题正确的解法是构造网络,求网络最小费用最 ...
- 就要从SDG离职了
在知乎上看到有个提问,你为什么从盛大离职.我八月份在盛大游戏实习之间,下个星期准备辞职迎接新的挑战.本文也将提到我在盛大实习的经历以及离职的原因.当然,不会涉及很多SDG内部的管理以及技术上的秘密. ...
- [HZWER]藏妹子之处
问题描述 今天CZY又找到了三个妹子,有着收藏爱好的他想要找三个地方将妹子们藏起来,将一片空地抽象成一个R行C列的表格,CZY要选出3个单元格.但要满足如下的两个条件: (1)任意两个单元格都不在同一 ...
- MySQL 5.6 SQL 优化及 5.6手册
http://blog.chinaunix.net/uid-259788-id-4146363.html http://www.cnblogs.com/Amaranthus/p/4028687.htm ...
- [BZOJ 1042] [HAOI2008] 硬币购物 【DP + 容斥】
题目链接:BZOJ - 1042 题目分析 首先 Orz Hzwer ,代码题解都是看的他的 blog. 这道题首先使用DP预处理,先求出,在不考虑每种硬币个数的限制的情况下,每个钱数有多少种拼凑方案 ...
随机推荐
- 调用支付JSAPI缺少参数:sign
微信jsapi调用微信支付时报 :调用支付JSAPI缺少参数:sign 这个问题我查了很久,最后把前端的代码也拿过来看来,发现前端 sign的参数名传错了~~~~~~~前后端分离很容易出现这种问题,对 ...
- 项目部署篇之三——安装tomcat7.0
1.下载tomcat 百度云下载 链接:https://pan.baidu.com/s/1UGPYHmR-1ehQRvdKGhSlyQ 提取码:3c0g 直接通过指令下载 wget http://mi ...
- Hexo 下 Markdown 的配置与学习
本篇 更换 Hexo 下的 Markdown 渲染插件 学习 Markdown 基本语法 ✎更换 Markdown 渲染插件 ✎原因 Hexo 内置的默认渲染插件是 hexo-renderer-mar ...
- [LC] 78. Subsets
Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The solut ...
- 前端-bootstrap-长期维护
############### bootstrap简介 ################ Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. ...
- GCC与静态库、动态库
GCC 常用指令 1 man gcc gcc工作流程例如: gcc hello.c 1234567891011121314 //***第一步***gcc -E hello.c >hello.i ...
- ViewPager 和 SwipeRefreshLayout 的滑动冲突
如题,当SwipeRefreshLayout包裹ViewPager时,发现ViewPager经常滑不动,容易把上面的刷新的小圈圈拽出来,只有手指在屏幕上向斜上方滑或者水平滑动,才能保持正常,这是一个滑 ...
- SPA(单页面web应用)和MPA(多页面web应用)的区别
转:https://blog.csdn.net/amaniz/article/details/79203562 vue多页面应用开发请参见: https://github.com/amunamuna/ ...
- haproxy笔记之五:一个配置示例
#--------------------------------------------------------------------- # Global settings #---------- ...
- 数据操作-apply函数族
R 作为一种向量化的编程语言,一大特征便是以向量计算替代了循环计算,使效率大大提升.apply函数族正是为解决数据循环处理问题而生的 -- 面向不同数据类型,生成不同返回值的包含8个相关函数的函数族. ...