资讯专栏INFORMATION COLUMN

前端周记20190211-20190215

loonggg / 3218人阅读

摘要:任务队列是一个事件队列,只要指定过回调函数的事件在事件发生时就会进入任务队列。回调函数会被主线程挂起来的代码,异步任务必须指定回调函数。

1、静态公有方法

(function(){
    var privateVariable=10;
    function privateFunction(){
        return false;
    }
    MyObject=function(){}
    MyObject.prototype.publicMethod=function(){
        privateVariable++;
        return this;
    }
})();
var a=new MyObject();
console.log(a.publicMethod());

MyObject在私有作用域中在原型上挂载了一个公有方法,可以访问私有作用域中的变量。
思考:原型上的函数的作用域含有被添加时的作用域。
2、js运行机制(Event Loop)
分为主线程和任务队列,主线程为空时,会读取任务队列中的事件(代码)。
任务队列是一个事件队列,只要指定过回调函数的事件在事件发生时就会进入任务队列。
回调函数:会被主线程挂起来的代码,异步任务必须指定回调函数。
settimeout和setInterval是到设置的事件后才触发回调函数,也就是添加到任务队列中。这里设置的时间是相对于在下一轮事件循环开始时的时间的间隔。这个时间是js执行到settimeout这个语句开始计算。h5中对时间标准化,最小4ms,不足则补齐
通过阅读Promise/A+规范,可以得知异步的实现可分为两个机制,分别是macro-task和micro-task。
Macrotasks包括: script(整体代码)、setTimeout, setInterval, setImmediate, I/O, UI Rendering;
Microtasks包括: process.nextTick, Promise, Object.observe, MutationObserver。
Macrotasks、Microtasks执行机制:
1.主线程执行完后会先到micro-task队列中读取可执行任务
2.主线程执行micro-task任务
3.主线程到macro-task任务队列中读取可执行任务
4.主线程执行macro-task任务
5....转到Step 1
这里注意的是,UI Rendering是在micro-task之后执行,需要在UI渲染之前执行的逻辑,一般采用micro-task异步回调方式进行调用
5、说明this几种不同的使用场景
作为构造函数执行:指向new生成的对象
作为对象属性执行:指向调用的对象
作为普通函数执行:指向调用的对象
作为回调函数执行:指向调用时的上下文
settimeout和setInterval:指向调用时的上下文即window
闭包:指向当前函数
箭头函数:指向定义时的上下文
call、apply、bind

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/101712.html

相关文章

  • Hyperledger Fabric周周记:起源

    摘要:作为系列的新篇章,我选择从超级账本的开始。为什么选择超级账本作为起点我在之前的文章中曾说过会从超级账本入手开始区块链的学习和实践,同时也给出了个人的理由。检查事务提议的响应。为了降低区块链应用的开发难度,超级账本项目又引入了。 本着以教带学,Learning by Doing的想法,我于上周加入了Bob组织的HiBlock区块链技术布道群。这个群可不太好混,群规要求每个成员必需每周有输...

    hatlonely 评论0 收藏0
  • 学习周记

    摘要:所以后面还是要对着机器学习实战这本书一行一行的手敲代码,然后把每一行都弄懂,全部做完之后再做一遍,这样才可能真正的熟悉起来。这段时间上下班的路上一直在用读的微积分部分,一方面可以练习英文口语,另一方面可以学习如何从更加直观的角度理解微积分。 2017-03-05记录 这一周没怎么有进度学习编程,主要是工作上占用了很多的时间,同时自己感觉也进入了一个平台期,对于编程有些疲倦了。 首先是不...

    李世赞 评论0 收藏0
  • 程序人生之周记

    摘要:穿得薄的话早晚会冷,穿的厚了中午又会热,这天真不知道穿啥了,愁人这周经历了双十一薅羊毛大战,本来还想着出去买个袄呢,我来的时候没带袄去年买的那个太白了,穿几天就得洗。 ...

    Michael_Lin 评论0 收藏0
  • Hyperledger Fabric周周记:Composer

    摘要:在上周周记的结尾,我曾经说过本周要介绍的开发和应用。可在通读完的文档之后,我立即取消了原定计划,直接介绍。让其成为开发首选的理由只有一个对开发者友好。将发布到的暴露成,供外部调用,完全语言中立。而后者则是为测试而生的。 在上周周记的结尾,我曾经说过本周要介绍Fabric的开发和应用。按照最开始的写作计划,我打算讲讲两种开发模式:直接使用Fabric API和利用Composer框架。可...

    quietin 评论0 收藏0
  • 基于RestOn智能睡眠监测器的睡眠监测系统

    摘要:一项目地址为二项目功能概述该项目实现的是一个基于智能睡眠监测器的睡眠监测系统。我们可以在个人中心的设置中心进行报警阈值的设定。睡眠自测试页面如下图所示用户可以在该页面进行睡眠自测试,点击提交按钮后,便可以在弹出框当中查看自己的睡眠质量等级。 一、项目地址为: https://github.com/linqian123... 二、项目功能概述: 该项目实现的是一个基于RestOn智能睡眠...

    Java_oldboy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<