1.用setTimeout()方法来模拟setInterval()与setInterval()之间的什么区别?

  1. 首先来看setInterval的缺陷,使用setInterval()创建的定时器确保了定时器代码规则地插入队列中。
  2. 这个问题在于:
  3. 如果定时器代码在代码再次添加到队列之前还没完成执行,
  4. 结果就会导致定时器代码连续运行好几次。
  5. 而之间没有间隔。
  6.  
  7. 不过幸运的是:
  8. javascript引擎足够聪明,能够避免这个问题。
  9. 当且仅当没有该定时器的如何代码实例时,
  10. 才会将定时器代码添加到队列中。
  11. 这确保了定时器代码加入队列中最小的时间间隔为指定时间。
  12.  
  13. 这种重复定时器的规则有两个问题:
  14. .某些间隔会被跳过
  15. .多个定时器的代码执行时间可能会比预期小。
  16.  
  17. 下面举例子说明:
  18. 假设,某个onclick事件处理程序使用啦setInterval()来设置了一个200ms的重复定时器。
  19. 如果事件处理程序花了300ms多一点的时间完成。

  1. 示意图如下:
  1. 这个例子中的第一个定时器是在205ms处添加到队列中,
  2. 但是要过300ms才能执行。
  3. 405ms又添加了一个副本。
  4. 在一个间隔,605ms处,第一个定时器代码还在执行中,
  5. 而且队列中已经有了一个定时器实例,
  6. 结果是605ms的定时器代码不会添加到队列中。
  7. 结果是在5ms处添加的定时器代码执行结束后,
  8. 405处的代码立即执行。
  9.  
  10. function say(){
  11. //something
  12. setTimeout(say,);
  13. }
  14. setTimeout(say,)
  15.  
  16. 或者
  17.  
  18. setTimeout(function(){
  19. //do something
  20. setTimeout(arguments.callee,);
  21. },);

2..js怎么控制一次加载一张图片,加载完后再加载下一张?

  1. ()方法1
  2. <script type="text/javascript">
  3. var obj=new Image();
  4. obj.src="https://dwz.cn/jbVvWYJr";
  5. obj.onload=function(){
  6. alert('图片的宽度为:'+obj.width+';图片的高度为:'+obj.height);
  7. document.getElementById("mypic").innnerHTML="<img src='"+this.src+"' />";
  8. }
  9. </script>
  10. <div id="mypic">onloading……</div>
  11.  
  12. ()方法2
  13. <script type="text/javascript">
  14. var obj=new Image();
  15. obj.src="https://dwz.cn/jbVvWYJr";
  16. obj.onreadystatechange=function(){
  17. if(this.readyState=="complete"){
  18. alert('图片的宽度为:'+obj.width+';图片的高度为:'+obj.height);
  19. document.getElementById("mypic").innnerHTML="<img src='"+this.src+"' />";
  20. }
  21. }
  22. </script>
  23.  
  24. <div id="mypic">onloading……</div>

3.简单实现Node的Events模块?

  1. 简介:
  2. 观察者模式或者说订阅模式,
  3. 它定义了对象间的一种一对多的关系,
  4. 让多个观察者对象同时监听某一个主题对象,
  5. 当一个对象发生改变时,
  6. 所有依赖于它的对象都将得到通知。
  7.  
  8. node中的Events模块就是通过观察者模式来实现的:
  9. var events=require('events');
  10. var eventEmitter=new events.EventEmitter();
  11. eventEmitter.on('say',function(name){
  12. console.log('Hello',name);
  13. })
  14. eventEmitter.emit('say','Jony yu');
  15.  
  16. 这样,eventEmitter发出say事件,
  17. 通过On接收,并且输出结果,
  18. 这就是一个订阅模式的实现,
  19. 下面我们来简单的实现一个Events模块的EventEmitter
  20.  
  21. ()实现简单的Event模块的emiton方法
  22. function Events(){
  23. this.on=function(eventName,callBack){
  24. if(!this.handles){
  25. this.handles={};
  26. }
  27. if(!this.handles[eventName]){
  28. this.handles[eventName]=[];
  29. }
  30. this.handles[eventName].push(callBack);
  31. }
  32. this.emit=function(eventName,obj){
  33. if(this.handles[eventName]){
  34. for(var i=;o<this.handles[eventName].length;i++){
  35. this.handles[eventName][i](obj);
  36. }
  37. }
  38. }
  39. return this;
  40. }
  41.  
  42. 这样我们就定义了Events
  43. 现在我们可以开始来调用:
  44. var events=new Events();
  45. events.on('say',function(name){
  46. console.log('Hello',nama)
  47. });
  48. events.emit('say','Jony yu');
  49. //结果就是通过emit调用之后,输出了Jony yu
  50.  
  51. ()每个对象是独立的
  52. 因为是通过new的方式,每次生成的对象都是不相同的,因此:
  53. var event1=new Events();
  54. var event2=new Events();
  55. event1.on('say',function(){
  56. console.log('Jony event1');
  57. });
  58. event2.on('say',function(){
  59. console.log('Jony event2');
  60. })
  61. event1.emit('say');
  62. event2.emit('say');
  63. //event1、event2之间的事件监听互相不影响
  64. //输出结果为'Jony event1' 'Jony event2'
  65.  
  66. .箭头函数中this指向举例?
  67.  
  68. var a=;
  69. function test2(){
  70. this.a=;
  71. let b=()=>{console.log(this.a)}
  72. b();
  73. }
  74. var x=new test2();
  75. //输出22

5.https协议的工作原理?

  1. 客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤:
  2.  
  3. 客户使用https url访问服务器,则要求web 服务器建立ssl链接。
  4. web服务器接收到客户端的请求之后,会将网站的证书(证书中包含了公钥),
  5. 返回或者说传输给客户端。
  6. 客户端和web服务器端开始协商SSL链接的安全等级,也就是加密等级。
  7. 客户端浏览器通过双方协商一致的安全等级,建立会话密钥,
  8. 然后通过网站的公钥来加密会话密钥,并传送给网站。
  9. web服务器通过自己的私钥解密出会话密钥。
  10. web服务器通过会话密钥加密与客户端之间的通信。

撩课-Web大前端每天5道面试题-Day28的更多相关文章

  1. 撩课-Web大前端每天5道面试题-Day10

    1. px和em的区别? px和em都是长度单位; 区别是: px的值是固定的,指定是多少就是多少, 计算比较容易. em得值不是固定的,并且em会继承父级元素的字体大小. 浏览器的默认字体高都是16 ...

  2. 撩课-Web大前端每天5道面试题-Day4

    1. 如何实现瀑布流? 瀑布流布局的原理: ) 瀑布流布局要求要进行布置的元素等宽, 然后计算元素的宽度, 与浏览器宽度之比,得到需要布置的列数; ) 创建一个数组,长度为列数, 里面的值为已布置元素 ...

  3. 撩课-Web大前端每天5道面试题-Day1

    1. var的变量提升的底层原理是什么? JS引擎的工作方式是: 1) 先解析代码,获取所有被声明的变量: 2)然后在运行.也就是说分为预处理和执行两个阶段. 变量提升:所有变量的声明语句都会被提升到 ...

  4. 撩课-Web大前端每天5道面试题-Day11

    1. 如何手写一个JQ插件? 方式一: $.extend(src) 该方法就是将src合并到JQ的全局对象中去: $.extend({ log: ()=>{alert('撩课itLike');} ...

  5. 撩课-Web大前端每天5道面试题-Day31

    1.web storage和cookie的区别? Web Storage的概念和cookie相似, 区别是它是为了更大容量存储设计的. Cookie的大小是受限的, 并且每次你请求一个新的页面的时候C ...

  6. 撩课-Web大前端每天5道面试题-Day25

    1.web前端开发,如何提高页面性能优化? 内容方面: .减少 HTTP 请求 (Make Fewer HTTP Requests) .减少 DOM 元素数量 (Reduce the Number o ...

  7. 撩课-Web大前端每天5道面试题-Day7

    1. 你能描述一下渐进增强和优雅降级之间的不同吗? 定义: 优雅降级(graceful degradation): 一开始就构建站点的完整功能, 然后针对浏览器测试和修复 渐进增强(progressi ...

  8. 撩课-Web大前端每天5道面试题-Day30

    1.什么叫优雅降级和渐进增强? 优雅降级: Web站点在所有新式浏览器中都能正常工作, 如果用户使用的是老式浏览器, 则代码会针对旧版本的IE进行降级处理了, 使之在旧式浏览器上以某种形式降级体验却不 ...

  9. 撩课-Web大前端每天5道面试题-Day23

    1.为什么用Nodejs,它有哪些优缺点? 优点: 事件驱动,通过闭包很容易实现客户端的生命活期. 不用担心多线程,锁,并行计算的问题 V8引擎速度非常快 对于游戏来说,写一遍游戏逻辑代码,前端后端通 ...

随机推荐

  1. 【BZOJ5306】 [Haoi2018]染色

    BZOJ5306 [Haoi2018]染色 Solution xzz的博客 代码实现 #include<stdio.h> #include<stdlib.h> #include ...

  2. Python 关于 encode与decode 中文乱码问题

    字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(en ...

  3. mysql多列索引和最左前缀

    数据库的索引可以加快查询速度,原因是索引使用特定的数据结构(B-Tree)对特定的列额外组织存放,加快存储引擎(索引是存储引擎实现)查找记录的速度.索引优化是数据库优化的最重要手段. 如果查询语句使用 ...

  4. git add .添加不成功

    情景: 我首先在一个有许多文件的文件夹中  git init  创建一个git管理仓库 之后 git add . 之后 git commit -m "提交" 发现提交不成功,文件没 ...

  5. Swift 里 Set(一)辅助类型

    _UnsafeBitset  是一个固定大小的 bitmap,用来确定指定位置是否有元素存在. HashTable  具体的 hash 碰撞算法在HashTable里实现,目前使用的是简单的开放地 ...

  6. 利用Makefile安装helloworld模块(速成)

    这学期对了一门操作系统,满怀着好奇装了虚拟机然后安了Ubuntu,这周作业是编译内核和安装个模块,妈耶,折腾了我一两天.终于弄完,CSDN上有挺多类似的教程,例如陈皓的跟我一起写Makefile,写的 ...

  7. 手推SVM

    推不动了,改日再更!

  8. 【xsy1130】tree 树形dp+期望dp

    题目写得不清不楚的... 题目大意:给你一棵$n$个节点的树,你会随机选择其中一个点作为根,随后随机每个点深度遍历其孩子的顺序. 下面给你一个点集$S$,问你遍历完$S$中所有点的期望时间,点集S中的 ...

  9. vue教程2-06 过滤器

    vue教程2-06 过滤器 过滤器: vue提供过滤器: capitalize uppercase currency.... <div id="box"> {{msg| ...

  10. 以太坊ERC20代币合约案例

    一.ERC20代币合约与web3调用 ERC20代币合约在小白看来觉得很高大上,但其实就是一个代币的定义标准,方便其他dapp统一调用各种代币的方法.如图: 二.ERC20合约标准 [官方链接] co ...