看【js倒计时正确打开方式】笔记

看到这一篇:https://github.com/gomeplusFED/blog/blob/master/2016-04/do-you-really-understand-how-to-write-a-countdown-by-javascript.md

讲怎么写倒计时器的。现在有点浮躁,有点困,所以后面写成组件的计时器没有看进去QUQ,回去再约。但是看到了文中提到的setTimeout和setInterval的区别,还有关于leftpad的标准构造,还有设计构造模式的过程。这么一说发现这篇文章真的是干货满满!大赞。

1.setTimeout和setInterval的区别

setTimeout是过了多久之后调用这个函数,setInterval是每过多久调用这个函数。由于js是单线程的,所以这两者都有可能被阻塞。这就导致了他们两个不一定会准时执行。

setTimeout的延时关系还不会太大,但是setInterval如果有一个地方阻塞了,那么到了时间,还是会调用函数,但是这些调用(回调)会被堆积,但是如果不阻塞了,也只执行其中的一个,所以这样对性能和内存影响比较大。所以一般都是建议使用setTimeout而不是setInterval。并且由于各种原因都有可能出现线程的阻塞,所以倒计时算得越久误差越大。

2.leftpad(左补零)

之前对于补零这件事真的没有想太多,甚至代码就是作者列的第一个QUQ。

这个函数需要考虑:1.负数 2.参数类型不确定,不一定是字符 3.想要左补的不一定是0可能是其他的字符

看看node中leftpad的实现:

function leftpad (str, len, ch) {
  str = String(str);  //解决类型问题
  var i = -1;
  if (!ch && ch !== 0) ch = ' ';   //解决向左补齐指定字符问题
  len = len - str.length;
  while (++i < len) {
    str = ch + str;
  }
  return str;
}
不过这个没有考虑负数的情况

3.关于设计模式

设计模式有好多……刚刚翻了一遍,挺多的……有点凌乱。感觉不用特意去记,但是涉猎应该是要广的。

所以这里复习一下对象的创建方法。

    1.工厂模式。把函数当做一个工厂,内部创建一个对象,然后返回出来。每次调用就返回一个对象。

    2.构造函数。把函数当做构造函数,所以很显而易见的方式。this.xxx统治一切=。=。使用的时候用new方法创建对象

    3.原型模式。把属性和方法都挂载到prototype上,这样对函数使用new构造一个新对象,这个对象就可以直接访问到函数的prototype原型对象。

元方法大概是这三种。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值