当使悠揭捉?格模式将会抛异常:

(2)Object.freeze冻结对象
这个是不克不及改属性值,如下图所示:

(3)defineProperty冻结单个属性
如下图所示,设置enumable/writable为false,那么这个属性将弗成遍历和写:

6. 准时器
怎么实现一个JS版的sleep函数?因为在C/C++/Java等说话是有sleep函数,然则JS没有。sleep函数的感化是让线程进入休眠,当到了指准时光后再从新唤起。你不克不及写个while轮回然后赓续地断定当前时光和开端时光的差值是不是到了指准时光了,因为如许会占用CPU,就不是休眠了。
这个实现比较简单,我们可以应用setTimeout + 回调:
- function sleep(millionSeconds, callback) {
- setTimeout(callback, millionSeconds);
- }
- // sleep 2秒
- sleep(2000, () => console.log("sleep recover"));
然则应用回调让我的代码不克不及够和平常的代码一样像瀑布流一样写下来,我得搞一个回调函数算作参数传值。于是想到了Promise,如今用Promise改写一下:
- function sleep(millionSeconds) {
- return new Promise(resolve =>
- setTimeout(resolve, millionSeconds));
- }
- sleep(2000).then(() => console.log("sleep recover"));
但似乎照样没有办法解决膳绫擎的问题,仍然须要传递一个函数参数。
固然应用Promise本质上是一样的,然则它有一个resolve的参数,便利你告诉它什么时刻异步停止,然后它就可以履行then了,特别是在回调比较复杂的时刻,应用Promise照样会加倍的便利。
- function sleep(millionSeconds) {
- return new Promise(resolve =>
- setTimeout(resolve, millionSeconds));
推荐阅读
深度进修在2006年开端崭露头脚后,近几年取得了飞速的成长,无论是学术研究照样企业应用均出现出指数级增长的趋势;伴跟着这项技巧的赓续成熟,深度进修在智能语音范畴率先发力,取得一系列>>>详细阅读
本文标题:JS高级程序设计高级技巧
地址:http://www.17bianji.com/lsqh/37133.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示