chenjg88
chenjg88
When a property is accessed on an object and if the property is not found on that object, the JavaScript engine should looks at the object's **\_\_proto\_\_**(different browser has their...
希望可以补下代码示例~
### Are you submitting a **bug report** or a **feature request**? feature request ## What is the expected behavior? just like react-final-form.
之前面试今日头条的时候,今日头条面试官问我,js执行会阻塞DOM树的解析和渲染,那么css加载会阻塞DOM树的解析和渲染吗?所以,接下来我就来对css加载对DOM树的解析和渲染做一个测试。 为了完成本次测试,先来科普一下,如何利用chrome来设置下载速度 1. 打开chrome控制台(按下F12),可以看到下图,重点在我画红圈的地方  2. 点击我画红圈的地方(No throttling),会看到下图,我们选择GPRS这个选项  3. 这样,我们对资源的下载速度上限就会被限制成20kb/s,好,那接下来就进入我们的正题 # css加载会阻塞DOM树的解析渲染吗? 用代码说话: ```html css阻塞 h1 { color: red !important } function h () { console.log(document.querySelectorAll('h1')) } setTimeout(h, 0)...
# 机器码 计算机直接使用的程序语言,是电脑CPU直接读取运行的机器指令,运行速度最快,但是晦涩难懂。机器指令码是用于指挥计算机应做的操作和操作数地址的一组二进制数。 缺点:与硬件设备相关,针对不同的系统架构,需要不同的机器码。 # 字节码 字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。 实现方式:通过编译器和虚拟机。编译器将源码编译成字节码,特定平台上的虚拟机将字节码转译为可以直接执行的指令。字节码的典型应用为Java bytecode。 优点:是通过高级语言编译得来的,与特定机器码无关,因此可以跨平台执行。 缺点:依赖虚拟机/解释器执行。  # 高级语言 高级语言(High-level programming language)是一种独立于机器,面向过程或对象的语言,如C、C++、Python、Java。 高级语言主要是相对于汇编语言、机器码等低级语言来说的,**与计算机的硬件结构及指令系统无关**,因此它有更强的表达能力。而且是**可移植**的。仅需稍作修改甚至不用修改,就可将一段代码运行在不同类型的计算机上。 # 高级语言如何执行 我们编程用的基本都是高级语言,计算机不能直接理解高级语言,**只能理解和运行机器码**,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。 # 高级语言划分 - 解释型语言:python、JavaScript - 编译型语言:C/C++、Pascal/Object ## 编译型语言 编译型语言的首先将源代码编译生成机器语言,再由机器运行机器码。...
# VScode 技术架构 ## Electron技术架构 Electron: **Chromium + Nodejs + 自定义 API**  - 1 个主进程:一个 Electron App 只会启动一个主进程,它会运行 package.json 的 main 字段指定的脚本 - N 个渲染进程:主进程代码可以调用 Chromium API 创建任意多个 web...
# Enum Enum 在编译后,会变成一个对象,key 和 value 都会变成编译对象的 key ``` enum A { b = 2, c = 6 } ``` 编译后 ``` "use strict"; var A; (function (A) { A[A["b"]...
Webpack 本质上是一个模块打包器,可以根据依赖图来将我们的文件打包。  # 原理 Webpack 的生命周期借助于 tapable 。tapable 类似于发布订阅库,webpack 的 hooks 就是 webpack 的生命周期,里面都是 tapable 一个实例,webpack 在适当的时机会触发这些生命周期。plugins 本质上则是通过监听 hooks 来做一些自定义处理。 1. 根据文件配置,找到入口文件。 1. 编译入口文件,使用配置的 loader 来处理文件。 1. 将 loader...
## 前言 最近要对旧的项目进行重构,统一使用全新的react技术栈。同时,我们也决定尝试使用React hooks来进行开发,但是,由于React hooks崇尚的是使用(也只能使用)function component的形式来进行开发,而不是class component,因此,整个开发方式也会与之前产生比较大的差异。所以,我这里就积累了下实际项目中遇到的问题以及思考,看下能不能帮助大家少走弯路。 ## 正文 接下来就直接进入正文。我会将项目中遇到的问题一一列举出来,并且给出解决方案。 ### 执行初始化操作的时机 当我转到React hooks的时候,首先就遇到了这个问题: 一般来说,业务组件经常会遇到要通过发起ajax请求来获取业务数据并且执行初始化操作的场景。在使用class component编程的时候,我们就可以在class component提供的生命周期钩子函数(比如componentDidMount, constructor等)执行这个操作。可是如果转到React hooks之后,function component里是没有这个生命周期钩子函数的,那这个初始化操作怎么办呢?总不能每次遇到这种场景都使用class component来做吧? 解决方案:**使用useEffect**(想知道useEffect是什么的话,可以[点击这里](https://reactjs.org/docs/hooks-effect.html)) useEffect,顾名思义,就是执行有副作用的操作,你可以把它当成`componentDidMount`, `componentDidUpdate`, and `componentWillUnmount` 的集合。它的函数声明如下 ```javascript useEffect(effect: React.EffectCallback,...
曾经我觉得我自己已经很了解箭头函数了,不可能再被坑了。可是前几天我遇到了一个很奇怪的问题,在苦恼了很久后,发现就是箭头函数带来的坑。因此,就有了这一篇文章~ ### 问题描述 比如我有一个基类 Animal,它有一个基础方法 sayName。之后每一个继承于它的子类,都需要自己实现这个 sayName 方法来证明自己的身份。基类代码实现很简单: ```javascript class Animal { sayName = () => { throw new Error('你应该自己实现这个方法'); } } ``` 那么我现在要继承于 Animal 基类来实现一个 Pig 子类,实现也很简单: ```javascript class...