浏览器进程(chrome)chrome中有5个主要进程: 浏览器进程(Browser Process):顶层进程,负责浏览器各进程工作,Tab外的工作由它负责。 UI Thread:负责浏览器按钮、地址栏。 storage Thread:负责文件访问。 渲染器进程(Renderer Process):浏览器内核,负责Tab内的所有工作。 Main Thread :构建dom树 -> 加载资源 -> js下载与执行 -> 样式计算 -> 构建布局树 -> ...
Promise的实现
前面已经写过一篇文章来理解Promise及其使用方法,这里尝试来模拟Promise。 要求根据Promise/A+原理,有以下几个点需要遵守: Promise有一个Promise States,其有三种状态: pending:初始状态,可以转化为fulfilled,rejected。 fulfilled: 需要一个value作为结果。 不能转化为其他状态。 rejected: 需要一个reason作为一个原因。 不能转化为其他状态。 必须要一个then方法,接受两...
全面理解JavaScript作用域与闭包
作用域pre:块语句块语句(或其他语言的复合语句)用于组合零个或多个语句。该块由一对大括号界定,可以是labelled: 块语句会生成一个块级作用域,生成块级作用域包含两种方法: 使用任意声明符号(’’, var,let,const)在函数中会生成一个块级作用域。 使用let,const在任何块语句中生成一个块级作用域。 注意:var在非函数的块语句中不会生成一个块级作用域。 介绍中都会使用var来进行举例,在变量声明中会对let和const进行说明。 介绍变量的简单说作用域就是在...
bind,call,apply的用法及实现
bindbind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。 参数thisArg 调用绑定函数时作为 this 参数传递给目标函数的值。 如果使用new运算符构造绑定函数,则忽略该值。 当使用 bind 在 setTimeout 中创建一个函数(作为回调提供)时,作为 thisArg 传递的任何原始值都将转换为 object。 如果 bind 函数的参数列表为空,或者t...
JavaScript中数组与对象的遍历方法
数组for循环最传统的方法,按下标存取,也是最高效的方法 123456789101112let arr = [1,2,3,4]for(let i = 0; i < arr.length; i++){ console.log(arr[i])}//1,2,3,4//不用每次计算len,更加高效for(let i = 0, let len = arr.length; i < len; i++){ console.log(arr[i])...
flex布局与grid布局简介
flex布局flex布局可以更加简洁的实现之前使用浮动和绝对布局实现的一些布局。特别是item的展示界面等。 首先应该明确一个概念,这个概念在grid布局中也存在,就是container与item,即被布局的元素被称为item,包围这些item的元素即为container。在flex布局中,item的大小要自己设置。 flex布局相对于grid布局,简单许多,它是按照轴线的方式进行布局,按照item其规定一个主轴线main axis(默认为水平),然后对应的即为交叉轴cross axis(...
Vue插件开发4-插件的打包与引用
Vue插件的打包还是犯了一个最基础的错误,本来插件打包Vue-CLI官网给出了说明,而我还在苦苦百度。百度上的教程都是几年前的,全是照搬一套。 具体过程就是: 按照Vue插件开发1-插件原理即应用编写一个插件。 使用命令vue-cli-service build --target lib --name myLib [entry] myLib就是你的插件名字,主要是JS文件的命名。 [entry]是你的文件入口文件,即导出install函数文件 执行该命令就会生成打包完成的js文件...
Vue插件开发3-简单拖动窗口的优化
思路思路一中心思想:首先算出首次拖动窗口距视窗的上面和左面的距离,然后计算出每次鼠标的偏移量(可正可负)。然后将其相加,就可得到新的偏移量。 代码思路: 设置一个变量,用于标记鼠标是否按下。 mousedown钩子函数中记录下此时的clientX1,clientY1,offsetX,offsetY。 mousemove钩子函数中记录下次此时的clientX2,clientY2,然后计算两组量: 拖动之前拖动框距文档边框的距离left1 = clientX1 - offsetX,top1 ...
Vue插件开发2-事件对象e与视窗api详解
事件参数 首先Vue没有对事件对象做修改,所以在Vue中的事件对象仍然与原生一样。 其对象属性具体又分为4类: 鼠标 / 键盘属性 属性 描述 altKey 返回当事件被触发时,”ALT” 是否被按下。 button 返回当事件被触发时,哪个鼠标按钮被点击。一个数字,表示鼠标事件发生时按下的鼠标按钮。可能的值:0:鼠标左键1:车轮按钮或中间按钮(如果有)2:鼠标右键注意: Internet Explorer 8和更早版本具有不同的返回值:1:鼠标左键2:鼠标右键4:...
Vue插件开发1-插件原理以及应用
原理简介 插件通常用来为 Vue 添加全局功能。-Vue官网 我觉得广义上的插件,实际上就是一些可以复用的功能或组件的封装。 首先分析Vue源码: 12345678910111213141516171819202122232425//src->core->instance->index.jsimport { initMixin } from './init'import { stateMixin } from ...