自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 JS 高级之手写一个Promise,Generator,async和 await

前言1.高级 WEB 面试会让你手写一个Promise,Generator 的 PolyFill(一段代码);2.在写之前我们简单回顾下他们的作用;3.手写模块见PolyFill.1.Promise1.1 作用Promise 大家应该都用过,ajax 库就是利用 Promise封装的;作用主要是解决地狱回调问题.1.2 使用1.2.1.方法一new Promise((resolve,reject)=>{ resolve('这是第一个 resolve 值')}).then((d

2020-09-17 17:06:46 435

原创 简单实现Vue

Vue 内部使用了Object.defineProperty()来实现数据响应式,通过这个函数可以监听到set和get的事件。var data = { name: 'yck' }observe(data)let name = data.name // -> get valuedata.name = 'yyy' // -> change valuef...

2020-06-08 22:30:10 236

原创 JavaScript手写代码总结

1. 实现一个new操作符new操作符做了这些事:• 它创建了一个全新的对象。• 它会被执行[[Prototype]](也就是__proto__)链接。• 它使this指向新创建的对象。。• 通过new创建的每个对象将最终被[[Prototype]]链接到这个函数的prototype对象上。• 如果函数没有返回对象类型Object(包含Functoin, Array, Date, RegExg, Error),那么new表达式中的函数调用将返回该对象引用。function New(func)

2020-06-08 22:19:41 292

原创 什么是JavaScript 函数式编程

前言函数式编程在前端已经成为了一个非常热门的话题。在最近几年里,我们看到非常多的应用程序代码库里大量使用着函数式编程思想。一、什么是函数式编程函数式编程是一种编程范式,主要是利用函数把运算过程封装起来,通过组合各种函数来计算结果。函数式编程意味着你可以在更短的时间内编写具有更少错误的代码。举个简单的例子,假设我们要把字符串 functional programming is great 变成每个单词首字母大写,我们可以这样实现:var string = 'functional programming

2020-05-16 23:41:27 188 1

原创 深入浅出Javascript闭包

一、引子闭包(closure)是 Javascript 语言的一个难点,面试时常被问及,也是它的特色,很多高级应用都要依靠闭包实现。本文尽可能用简单易懂的话,讲清楚闭包的概念、形成条件及其常见的面试题。我们先来看一个例子:var n = 999;function f1() { console.log(n);}f1() // 999上面代码中,函数f1可以读取全局变量n。但是,函数外部无法读取函数内部声明的变量。function f1() { var n = 999;}consol

2020-05-14 23:42:53 112

原创 如何居中一个元素(最全版)

前言本文主要介绍水平居中,垂直居中,还有水平垂直居中各种办法,思维导图如下:一、水平居中1.行内元素水平居中利用 text-align: center 可以实现在块级元素内部的行内元素水平居中。此方法对inline、inline-block、inline-table和inline-flex元素水平居中都有效。 .parent{//在父容器设置 text-align:center; }此外,如果块级元素内部包着也是一个块级元素,我们可以先将其由块级元素改变为行内块元素,

2020-05-13 12:38:57 1332

原创 前端必知的安全防范知识

总的来说安全是很复杂的一个领域,不可能通过一篇就能学习完这部分的内容。在这篇文章中,我们会学习到常见的一些安全问题及如何防范的内容,在当下其实安全问题越来越重要,已经逐渐成为前端开发必备的技能了。XSSXSS (Cross Site Scripting)简单点来说,就是攻击者想尽一切办法将可以执行的代码注入到网页中。XSS 可以分为多种类型,但是总体上我认为分为两类:持久型和非持久型。持久型也就是攻击的代码被服务端写入进数据库中,这种攻击危害性很大,因为如果网站访问量很大的话,就会导致大量正常访问页面

2020-05-09 20:42:24 691

原创 从V8中看前端性能优化

JS 是编译型还是解释型语言其实并不固定。首先 JS 需要有引擎才能运行起来,无论是浏览器还是在 Node 中,这是解释型语言的特性。但是在 V8 引擎下,又引入了 TurboFan 编译器,他会在特定的情况下进行优化,将代码编译成执行效率更高的 Machine Code,当然这个编译器并不是 JS 必须需要的,只是为了提高代码执行性能,所以总的来说 JS 更偏向于解释型语言。那么这一小节的内容主要会针对于 Chrome 的 V8 引擎来讲解。在这一过程中,JS 代码首先会解析为抽象语法树(AST),然

2020-05-08 22:00:53 167

原创 实现小型打包工具

Webpack 的源码很难读,在理解源码的基础上,我将会带大家来实现一个几十行的迷你打包工具,该工具可以实现以下两个功能:• 将 ES6 转换为 ES5• 支持在 JS 文件中 import CSS 文件通过这个工具的实现,大家可以理解到打包工具的原理到底是什么。实现因为涉及到 ES6 转 ES5,所以我们首先需要安装一些 Babel 相关的工具:yarn add babylon ba...

2020-05-08 10:32:01 124

原创 最简单的代码实现Vue响应式原理

Vue 内部使用了 Object.defineProperty() 来实现数据响应式,通过这个函数可以监听到 set 和 get 的事件。var data = { name: 'yck' }observe(data)let name = data.name // -> get valuedata.name = 'yyy' // -> change valuefunction...

2020-05-07 14:03:49 622

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除