JavaScript
不帅的喆
https://github.com/fancyzhe
展开
-
JavaScript与浏览器的那些事-引擎与线程
如果你做过可视化开发:因为需要向页面中添加大量的图表或点线元素而导致页面卡顿、性能下降。这时候应该更多的了解JavaScript与浏览器之间的关系。转载 2018-01-10 14:20:45 · 486 阅读 · 0 评论 -
我知道的JavaScript(1)-- 理解作用域
介绍作用域程序中的一段源代码在执行会经历三个步骤,统称“编译”。词法分析 -> 语法分析 -> 代码生成词法作用域词法作用域意味着作用域是由书写代码时函数声明的位置来决定。编译的词法分析阶段基本能知道全部标识符在哪里以及是如何声明的,从而能够预测在执行过程中如何对他们进行查找。var x = 4;function foo(a){ var b = 1; ...原创 2018-12-28 18:03:52 · 207 阅读 · 0 评论 -
我知道的JavaScript(2)-- 解决跨域
CORS Cross-Origin Resource Sharing跨域资源共享前言同源策略是为了减少XSS和CSRF攻击,跨域是由浏览器的同源策略导致的。同源策略会导致缓存无法访问DOM和JS无法访问AJAX请求不能使用解决方案JsonP基本原理是动态加载一个script便签,从而实现跨域访问。仅限于get请求CORS跨域资源共享在服务器端要开放跨域,设置Acc...原创 2018-12-28 18:03:14 · 178 阅读 · 0 评论 -
react的setState进行Promise化
很多时候业务需要,在setState后再进行操作,比如改变下拉框的state值需要刷新table列表。这时候不可避免的需要使用setState中自带的callback方式。callback方式缺点是不好定位错误,很容易就进入了回调地狱。所以想到了可以将setState进行promise化,用.then的方式取代回调。/** * 将setState方法promise化,用promise的方式去...原创 2018-12-11 18:13:01 · 2363 阅读 · 1 评论 -
Node基础(2)-- 异步I/O和异步编程
阻塞和非阻塞操作系统内核对于I/O操作只有两种方式,阻塞和非阻塞。阻塞是要等事件在系统内核层面完成所有的操作,才是调用结束可以进行下一个调用。造成了一定的CPU浪费,CPU不能得到充分利用。阻塞调用->等待数据->返回数据非阻塞调用不带数据返回,调用后立即返回。返回过后,CPU就可以执行其他的事件,如果需要获取数据的话,需要通过文件描述符再次获取。非阻塞调用-...原创 2018-12-17 09:43:03 · 247 阅读 · 0 评论 -
对JS值类型和引用类型的整理
Js变量类型:值类型和引用类型1.值类型占用空间固定,保存在栈中。2.保存和复制的都是本身3.用typeof可以检测数据类型4.基本数据类型数据是值类型1.引用类型占用空间不固定,保存在堆中。2.保存的是指向对象的指针。3.用instanceof去检测数据类型。4.用new()方法构造出的引用类型。值传递和引用传递,引用对象保存的不是值,是值的物理地址。(传值和传址)对象没有被...原创 2018-11-14 12:16:25 · 328 阅读 · 0 评论 -
js中 call bind apply区别
call、apply、bind都是js中改变this的指向,但是使用起来不太一样。call(this,agrument1,agrument2)apply(this,[agrument1,agrument2])bind(this)(agrument1,agrument2)注意如果call和apply的第一个参数写的是null,那么this指向的是window对象...原创 2018-11-14 12:14:44 · 180 阅读 · 0 评论 -
js中map和forEach的相同和不同
相同点: 都是循环遍历数组中的每一项forEach和map方法里每次执行匿名函数都支持3个参数,参数分别是item(当前每一项)index(索引值)、arr(原数组) 匿名函数中的this都是指向window 只能遍历数组不同点: Map返回的是新数组,forEach没有返回值。map不改变原数组,forEach会改变原数组。map是新建了一个数组进行操作后返回,而forEach是...原创 2018-07-10 16:34:47 · 646 阅读 · 0 评论 -
DOM元素遍历——红皮书上的API
childElement:返回子元素的个数firstElement:指向第一个子元素lastElement:指向最后一个子元素previousElementSibling:指向前一个同辈元素nextElementSibling:指向后一个同辈元素...原创 2018-05-23 16:08:15 · 286 阅读 · 0 评论 -
深度解析JavaScript事件循环--EventLoop
为什么有事件循环? JavaScript是单线程语言,所以会产生异步。在执行任务的时候,先检查事件队列是否为空,不为空的话将任务放到执行栈执行,执行栈执行过后为空就会又回到事件队列去判断事件队列是否为空,这样就形成了事件循环的简单机制。**栈:先进后出 队列:先进先出****执行栈:可以理解为js的单线程执行(正在做的事情)唯一的 事件队列:js的todolist(后...原创 2018-05-22 18:55:13 · 200 阅读 · 0 评论 -
NodeJS Module实现原理
**Node引入模块的时候: 路径分析 -> 文件定位 -> 编译执行****对应加载module加载顺序 缓存加载 -> 核心模块->自定义模块** 核心模块指的是fs,http等1.路径分析 相对路径模块在分析路径的时候,require会把路径变成真实路径。以绝对路径作为索引,编译执行后放入...原创 2018-05-22 18:04:08 · 718 阅读 · 0 评论 -
对比起来学习前端三大框架(持续更新)
angular:数据双向绑定,模板功能强大。依赖注入和自定义directive非常灵活。学习路线长,框架偏重。优缺点详见:angularJS在实际开发中有哪些优缺点?vue:轻量级。每一个组件自带shouldComponentUpdate react:虚拟DOM操作,设置state值render页面。 在vue的官网中有提到,跟其他框架的不同,可以去仔细了解...原创 2018-02-10 10:33:29 · 14270 阅读 · 0 评论 -
学习lodash——这一篇就够用
在ES6盛行,ES78马上就要出来的情况下;我们还是需要懂得一些工具库的使用,比较推荐的是lodash。在下面就会谈一谈为什么要使用lodash和lodash的基本使用。 首先要明白的是lodash的所有函数都不会在原有的数据上进行操作,而是复制出一个新的数据而不改变原有数据。类似immutable.js的理念去处理。 lodash是一套工具库,内部封装了很多字符串、数组、对象...原创 2018-01-17 09:40:42 · 85686 阅读 · 18 评论 -
通过实现getData接口了解egg.js
egg的路由跟umi的路由比较相似,是一种约定式路由的实现。UMI是在指定文件夹下建立相应文件,umi会自动生成路由配置。对下面这段代码进行增加修改:'use strict';//脚手架生成的router.js/** * @param {Egg.Application} app - egg application */module.exports = app => { co...原创 2019-03-27 15:30:40 · 892 阅读 · 0 评论