随笔分类 - javascript
摘要:跨域的请求在服务端会不会真正执行? 这个问题看似简单,但是如果对跨域的理解不到位,那么大概率会答不好。 解题思路 跨域究竟是谁的策略? 在什么时机会拦截请求? 究竟什么时候会发预检请求? 如果有预检,请求什么时候会被真正执行? 跨域请求的拦截 同源策略是浏览器的策略,服务端默认是没有这种策略的。 所
阅读全文
摘要:速度上 for > forEach > map for 循环时没有创建对象,节约了时间。 forEach 循环时创建 value 对象 map 循环时创建 value 对象,还要新建 Array 对象 var arr = Array(10000000).fill(0).map((v,i) => i)
阅读全文
摘要:三种方法用于指定函数内部的 this 指向 call var rascal = 456; var keith = { rascal: 123 }; function a() { console.log(this.rascal); } a.call(this); //456 a.call(keith)
阅读全文
摘要:支持限制并发数 class PromiseQueue { limit: number active: number queue: Array<() => Promise<any>> constructor(limit = 3) { // 并发限制 this.limit = limit; // 当前活
阅读全文
摘要:/** * 将 async/await 转为 generator 以 Promise 形式使用,可以在过程中随时打断/等待 * function build(appPath, config) { return awaiter(this, undefined, undefined, function*
阅读全文
摘要:forEach forEach,对数组的每个元素执行一次给定的函数。 const array1 = ['a', 'b', 'c']; array1.forEach(element => console.log(element)); fill、map file,用一个固定值填充一个数组中从起始索引到终
阅读全文
摘要:1.Types 类型 & Coercion 类型转换 Primitive Types 原始类型 underfined string number boolean object symbol null 其中 null,虽然是基本变量,但是因为设计的时候null是全 0,而object是 000 开头,
阅读全文
摘要:ES6 规范中,引入了 class 的概念。 但是 JS 中并没有一个真正的 class 原始类型, class 仅仅只是对原型对象运用语法糖。 函数声明和类声明之间的一个重要区别在于, 函数声明会提升,类声明不会。 class Cat{ constructor(name,age){ this.na
阅读全文
摘要:生成器函数 普通函数使用 function 声明,而生成器函数使用 function* 声明 在生成器函数内部,有一种类似 return 的语法:关键字 yield。二者的区别是,普通函数只可以 return 一次,而生成器函数可以 yield 多次(当然也可以只 yield 一次)。在生成器的执行
阅读全文
摘要:什么是 css in js 用 js 的方式管理 css。 这段代码来自 styled-components 官网。 Button 是一个样式组件。 const Button = styled.a` display: inline-block; border-radius: 3px; padding
阅读全文
摘要:1、CommonJS require("module"); require("../file.js"); exports.doStuff = function() {}; module.exports = someValue; 优点:Node.js采用了这个规范,npm中模块数量多 缺点:同步加载模
阅读全文
摘要:1、ES模块是如何使用的 通常我们使用 ES module 都是 // app.tsx import React, { Component } from 'react' import { Provider } from 'react-redux' import { store } from './s
阅读全文
摘要:1、原型链继承 原理:把子类的 prototype(原型对象)直接设置为父类的实例 缺点:因为子类只进行一次原型更改,所以子类的所有实例保存的是同一个父类的值。 当子类对象上进行值修改时,如果是修改的原始类型的值,那么会在实例上新建这样一个值; 但如果是引用类型的话,他就会去修改子类上唯一一个父类实
阅读全文
摘要:const myDeepCopy = JSON.parse(JSON.stringify(myOriginal)); 这种方法缺点很多: 循环引用:JSON.stringify() 的对象中如果有循环引用会抛出异常 Converting circular structure to JSON。 其他数
阅读全文
摘要:debonce 防抖,在 wait 时间内只执行最后一次 高频率触发的事件,在指定的单位时间内,只响应最后一次 function myDebounce(fn, wait = 0) { let timer = null; function debounce() { let _context = thi
阅读全文
摘要:1.promise/A+规范规定 promise 是一个拥有 then 方法的对象或函数,其行为符合本规范;一个 Promise 的当前状态必须为以下三种状态中的一种:等待态(Pending)、执行态(Fulfilled)和拒绝态(Rejected)。 const PENDING = 'pendin
阅读全文
摘要:1. new User() 通过构造函数创建的对象的 __proto__ 指向构造函数的原型. 2. User() 构造函数中的 this 指向 User() 构造函数的实例对象. function myNew(target){ let result = {}; let arg = Array.pr
阅读全文
摘要:instanceof 检查目标对象的原型链中是否有与指定对象的原型相同的原型, 通过 严格等于来对于两个原型是否相等。 function myInstanceof(target, source) { let proto = target.__proto__; let prototype = sour
阅读全文