深入了解浏览器渲染进程的工作方式

8 月 29 日
阅读 13 分钟
4.2k
在渲染进程中,主线程处理大部分发送给用户的代码。如果使用 Web Worker 或 Service Worker,部分 JavaScript 会由工作线程处理。另外,合成器线程和光栅化线程也在渲染进程中运行,确保网页高效、流畅地渲染。
封面图

JSONP 跨域原理及实现

2022-06-07
阅读 5 分钟
11.9k
如果两个页面的协议,域名和端口都相同,则两个页面具有相同的源例如,下表给出了相对于 http://www.test.com/index.html 页面的同源检测:

JavaScript 之原型、原型链

2022-05-28
阅读 4 分钟
2.9k
其他编程语言如 Java 等使用 new 命令时,都会调用“类”的构造函数。但是,JavaScript没有“类”,本身并不提供一个 class 实现(虽然在ES6中提供了class 关键字,但其只是语法糖,JavaScript仍然是基于原型的)。于是,JavaScript作了一个简化的思想,new 命令后面跟的不是类,而是构造函数,用构造函数生成实例对象,但其...

Vue 之 nextTick 原理

2022-05-28
阅读 8 分钟
5.3k
阅读 Vue 源码就是一个很好的学习方式,不仅可以让我们帮助我们更快解决工作中遇到的问题,也能借鉴优秀源码的经验,学习高手发现问题、思考问题、解决问题的思路,学习怎么写出规范又好维护的高质量代码。

🔥 前端性能优化最佳实践

2022-04-24
阅读 22 分钟
19.3k
随着业务的不断迭代,项目日渐壮大,为了给用户提供更优的体验,性能优化是前端开发避不开的话题。一个优秀的网站必然是拥有丰富功能的同时具有比较块的响应速度,想必我们浏览网页时都更喜欢丝般顺滑的感受。
封面图

Vue3中对VDOM的改进

2020-04-23
阅读 5 分钟
5.1k
vue-next 对virtual dom的patch更新做了一系列的优化,从编译时加入了 block 以减少 vdom 之间的对比次数,另外还有 hoisted 的操作减少了内存的开销。本文写给自己看,做个知识点记录,如有错误,还请不吝赐教。

前端性能优化小结(面试干货)

2020-03-14
阅读 12 分钟
8.9k
移动互联网时代,用户对于网页的打开速度要求越来越高。首屏作为直面用户的第一屏,其重要性不言而喻。优化用户体验更是我们前端开发非常需要 focus 的东西之一。

快速掌握JSONP跨域

2020-02-23
阅读 4 分钟
4.4k
原理:事先定义一个用于获取跨域响应数据的回调函数,并通过没有同源策略限制的script标签发起一个请求(将回调函数的名称放到这个请求的query参数里),然后服务端返回这个回调函数的执行,并将需要响应的数据放到回调函数的参数里,前端的script标签请求到这个执行的回调函数后会立马执行,于是就拿到了执行的响应数据。

JavaScript中各种源码实现

2020-02-16
阅读 10 分钟
12.1k
能够手撕各种JavaScript原生函数,可以说是进大厂必备!同时对JavaScript源码的学习和实现也能帮助我们快速扎实地提升自己的前端编程能力。

掌握基于 JWT 实现的 Token 身份认证

2019-12-07
阅读 9 分钟
9.4k
最近正好在独立开发一个后台管理系统,涉及到了基于Token的身份认证,自己边学边用边做整理和总结,对基于JWT实现的Token的身份认证做一次相对比较全面的认识。

AJAX原理及常见面试题

2019-12-03
阅读 7 分钟
5.9k
AJAX 即 Asynchronous Javascript And XML(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

JavaScript之函数柯理化

2019-11-19
阅读 5 分钟
6.8k
在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。这个技术由克里斯托弗·斯特雷奇以逻辑学家哈斯凯尔·加里命名的,尽管它是Moses Schönfinkel和戈特洛布·弗雷格发明...

浅谈 MVC 和 MVVM 模型

2019-11-11
阅读 6 分钟
14.4k
那时计算机世界天地混沌,浑然一体,然后出现了一个创世者,将现实世界抽象出模型形成model,将人机交互从应用逻辑中分离形成view,然后就有了空气、水、鸡啊、蛋什么的。——《前端MVC变形记》

深入理解 ES6 Promise

2019-11-07
阅读 26 分钟
13.1k
最近一段时间在重温ES6,Promise应该是是ES6新特性中非常重要的一部分内容。其实Promise在我日常开发中已经用得比较多,但大多数时候只是知道Promise可以用来实现异步编程,也只限于单纯地会用罢了,并没有时间深入去学习过,而且网上得资料大多都比较琐碎。我就自己花时间做了一个关于Promise比较完整的整理,深入学习...

ES6 Promise笔试题

2019-11-07
阅读 9 分钟
8.4k
一动不动是王八,上一篇文章学习了那么久Promise,是时候大显身手了! 基础题 题一 {代码...} 解析:Promise 构造函数是同步执行的,promise.then 中的函数是异步执行的。 运行结果: {代码...} 题二 {代码...} 解析:这道题主要理解js执行机制。 第一轮事件循环,先执行宏任务,主script,new Promise立即执行,输出 3...

JavaScript之多线程和Event Loop

2019-11-02
阅读 7 分钟
7.4k
几乎在每一本JS相关的书籍中,都会说JS是单线程的,JS是通过事件队列(Event Loop)的方式来实现异步回调的。 对很多初学JS的人来说,根本搞不清楚单线程的JS为什么拥有异步的能力,所以,我试图从进程、线程的角度来解释这个问题。

JavaScript之对象继承

2019-10-17
阅读 5 分钟
2k
这个概念其实也变得比较简单,可以类比类的继承链条,即每个对象的原型往上追溯,一直到Object为止,这组成了一个链条,将其中的对象串联起来,当查找当前对象的属性时,如果没找到,就会沿着这个链条去查找,一直到Object,如果还没发现,就会报undefined。那么也就意味着你的原型链不能太长,否则会出现效率问题。

ES6 尾调用和尾递归

2019-10-15
阅读 6 分钟
16.2k
上面代码中,情况一是调用函数g之后,还有赋值操作,所以不属于尾调用,即使语义完全一样。情况二也属于调用后还有操作,即使写在一行内。情况三等同于下面的代码。

JavaScript之判断数据类型

2019-10-15
阅读 5 分钟
4k
Javascript 中的数据类型判断其实是一个JavaScript非常基础问题,但不论是日常实际编程过程中和还是面试时,这都是一个非常常见的问题。

ES6 箭头函数

2019-09-04
阅读 6 分钟
2.6k
基本用法 ES6 允许使用“箭头”(=>)定义函数。 {代码...} 如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。 {代码...} 如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。 {代码...} 由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,...

JavaScript之深入理解闭包

2019-08-30
阅读 6 分钟
2.5k
闭包的概念:《JavaScript权威指南》:函数对象可以通过作用域链相互关联起来,函数体内部的变量可以保存在函数作用域内,这种特性称为“闭包”。

理解JavaScript函数调用和“this”

2019-08-28
阅读 4 分钟
2.3k
前言 我看到很多人都有关于JavaScript函数调用的困惑。特别是,很多人抱怨函数调用中的语义令人困惑。 在我看来,通过理解核心函数调用原语,可以清除很多这种混淆,然后查看在该原语之上调用函数作为语法糖的所有其他方法。 事实上,这正是ECMAScript规范对此的看法。 在某些地方,这篇文章对ECMAScript规范做了一些简...

JavaScript之数组

2019-07-08
阅读 9 分钟
3k
JavaScript数组是JavaScript对象的特殊形式。数组索引实际上和碰巧是整数的属性名差不多,使用方括号访问数组元素就像用方括号访问对象的属性一样。JavaScript将指定的数字索引值转换成字符串——索引值1变成 “1”——然后将其作为属性名来使用。

JavaScript之对象属性

2019-07-04
阅读 8 分钟
4.8k
ECMAScript 5定义了一个名为Object.create()的方法,它创建一个新对象, 其中第一个参数是这个对象的原型。Object.create()提供第二个可选参数,用以对对象的属性进行进一步描述。Object.create()是一个静态函数,而不是提供给某个对象调用的方法。使用它的方法很简单,只须传入所需的原型对象即可:

JavaScript之“use strict”

2019-07-02
阅读 2 分钟
5.3k
“use strict"是ECMAScript 5引入的一条指令。指令不是语句(但非常接近于语句)。“usestrict"指令和普通的语句之间有两个重要的区别:

JavaScript之new运算符

2019-06-28
阅读 2 分钟
3.9k
创建一个对象类型,需要创建一个指定其名称和属性的函数;对象的属性可以指向其他对象,看下面的例子:当代码new Foo(…)执行时,会发生以下事情:

19年前端笔试题小结(一)

2019-06-13
阅读 6 分钟
24k
什么是web标准?WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为 (Behavior)。 对应的标准也分三方面:结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如 W3C DOM)、ECMAScript等。这些标准大部分由W3C...

JavaScript之call()理解

2019-06-13
阅读 3 分钟
5.7k
注意:该方法的语法和作用与apply()方法类似,只有一个区别,就是call()方法接受的是一个参数列表,而apply()方法接受的是一个包含多个参数的数组。JavaScript中的每一个Function对象都有一个apply()方法和一个call()方法,它们的语法分别为: