JavaScript事件冒泡与事件捕获

JavaScript事件冒泡与事件捕获

事件冒泡与事件捕获

事件冒泡事件捕获分别由微软网景公司提出,这两个概念都是为了解决页面中事件流(事件发生顺序)的问题。

比如说,下面的代码:

1
2
3
4

<div id="outer">
<p id="inner">Click me!</p>
</div>

上面的代码当中一个div元素当中有一个p子元素,如果两个元素都有一个click的处理函数,如果点击了inner的话,其实outer
也算是被点击了的。那么我们怎么才能知道哪一个函数会首先被触发呢?为了解决这个问题微软和网景提出了两种几乎完全相反的概念。

阅读更多
深入理解JavaScript中的EventLoop原理

深入理解JavaScript中的EventLoop原理

浏览器的多进程架构

在浏览器刚被设计出来的时候,那时的网页非常的简单,每个网页的资源占有率是非常低的,因此一个进程处理多个网页时可行的。然后在今天,大量网页变得日益复杂。把所有网页都放进一个进程的浏览器面临在健壮性,响应速度,安全性方面的挑战。

  • 健壮性:现代浏览器大多都是多tab架构,如果所有的tab都存在于一个进程内部的话,如果其中的一个tab崩溃,会影响其他的tab
    ,为每个tab分配一个进程,则会有效避免这个问题。

  • 响应速度:这个不赘述。

  • 安全性:由于同一进程内的线程是共享资源与地址空间的,所以如果把不同的网页放在同一进程内,可能会导致数据泄露等问题。

阅读更多
JavaScript闭包到底解决了什么问题?

JavaScript闭包到底解决了什么问题?

JavaScript中的闭包到底是个什么东西

JavaScript中的闭包其实是一个让函数返回另一个内部函数的过程,我们都知道,JavaScript中,函数其实也是一个变量,或者说是对象,所以,对于上述的过程,我们就能够理解,这种方式是能够被实现的。

闭包的具体实现方式:

阅读更多
JavaScript中对象的生命周期

JavaScript中对象的生命周期

一切皆对象

其实,我们已经了解到了,JavaScript中,所有的东西都是对象,也就是所谓的“Object”
类型,但是,在JavaScript中,并没有真正的类的概念,所以,此处的对象并不像是Java或者Python中的那样,是由类实例化而来的,而是由键和值来组成的,对象其实就是以键命名的值的容器。

比如,我们使用typeof来检查一个数组的类型,会发现,其实数组也是一个Object

1
2
3
let a = []
typeof a
// "object"
阅读更多
JavaScript引擎的工作原理探析
深入了解JavaScript中的基本变量类型
通过一个小例子理解JavaScript中的函数调用过程

通过一个小例子理解JavaScript中的函数调用过程

函数调用栈

调用栈,具有LIFO(Last in, First out 后进先出)结构,用于存储在代码执行期间创建的所有执行上下文。

当JavaScript引擎首次读取脚本时,会创建一个全局执行上下文并将其push
到当前执行栈中。每当发生函数调用时,引擎都会为该函数创建一个新的执行上下文并push到当前执行栈的栈顶。

引擎会运行执行上下文在执行栈栈顶的函数,根据LIFO规则,当此函数运行完成后,其对应的执行上下文将会从执行栈中pop
出,上下文控制权将转到当前执行栈的下一个执行上下文。

阅读更多
使用pm2管理你的nodejs进程

使用pm2管理你的nodejs进程

PM2 是一个具有内置负载均衡功能的 Node.js 应用程序的进程管理器。 它可以使 Node.js
应用程序永久保持运行状态,无需停机即可重新加载它们,并且很容易进行系统任务管理

阅读更多
在Vue-Router中使用跳转动画
使用vue+v-chart制作一个漂亮的饼状图