自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 js 深拷贝

例子let a = { name: 'demo', age: 18};let b = a;b.name = 'demo1';console.log(a); // 输出 {name: "demo1", age: 18}console.log(b); // 输出 {name: "demo1", age: 18}因为JS对于对象的赋值使用的是浅拷贝,其中一个实例变...

2019-07-16 14:44:03 161

转载 JavaScript 运行机制详解:再谈Event Loop

一、为什么JavaScript是单线程?JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定JavaScri...

2018-07-18 14:46:12 183

转载 JavaScript中的递归

递归简介一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。我们来举个例子,我们可以用4的阶乘乘以4来定义5的阶乘,3的阶乘乘以4来定义4的阶乘,以此类推。factorial(5) = factorial(4...

2018-07-17 17:57:40 288

转载 Javascript算法——选择排序

1. 选择排序1.1 算法描述选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n2) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。通俗来说就是你们中间谁最小谁就出列,站到队列的最后边,然后继续对着剩余的无序数组说你们中间谁最小谁就出列,站到队列的最后边,一直到最后一个,继续站到最后边,这样数组就有了顺序,从小到大。1.2 算法...

2018-07-17 17:49:44 177

转载 Javascript算法——快速排序

1. 算法介绍1.1 算法描述快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用。快速排序是一种既不浪费空间又可以快一点的排序算法。1.2 算法步骤先从数列中取出一个数作为“基准”。 分区过程:将比这个“基准”大的数全放到“基准”的右边,小于或等于“基准”的数全放到“基准”的左边。 再对左右区间重复第...

2018-07-17 17:48:43 143

转载 Javascript算法——希尔排序

常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。这里主要介绍希尔排序。一图胜千言:1. 算法介绍1.1 算法描述希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线...

2018-07-17 17:47:34 212

转载 js实现深拷贝

type函数首先我们要实现一个getType函数对元素进行类型判断,关于元素的类型判断,可以参考我另一篇博文 js中typeof和instanceof详解 ,这里用一个更简便的方法,直接调用Object.prototype.toString 方法。 function getType(obj){ //tostring会返回对应不同的标签的构造函数 var toStri...

2018-06-06 16:26:01 316

转载 js中__proto__和prototype的区别和关系

__proto__是每个对象都有的一个属性,而prototype是函数才会有的属性!!! 使用Object.getPrototypeOf()代替__proto__!!!一、prototype几乎所有的函数(除了一些内建函数)都有一个名为prototype(原型)的属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以有特定类型的所有实例共享的属性和方法。prototype是通过调用构造...

2018-05-24 16:47:11 439

转载 深入理解js构造函数

new表达式是配合构造函数使用的,例如new String(“a string”),调用内置的String函数构造了一个字符串对象。下面我们用构造函数的方式来重新创建一个实现同样功能的对象,首先是定义构造函数,然后是调用new表达式: 1234567function CO(){    this.p = “I’m in constructed object”;    this.alertP = fu...

2018-05-24 16:38:14 2535

原创 javaScript中的this

this是在运行时进行绑定的,并不是在编写时绑定,它的上下文取决于函数调用时的各种条件。this的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。...

2018-05-24 16:30:46 129

原创 javaScript正则表达式

一个可以帮助学习正则表达式的工具:https://regexper.com/JavaScript通过内置对象RegExp支持正则表达式有两种方法实例化RegExp对象:字面量var reg = /\bis\b/g; 说明:\b是指单词边界,匹配出is单词,修饰符g全文搜索,不添加 ,搜索到第一个匹配停止。构造函数var reg = new RegExp('\\bis\\b’,'g'); 说明:双反...

2018-05-18 15:44:09 157

转载 用nrm一键切换npm源

当使用官方npm源安装各种包比较慢的时候,建议修改npm源地址查看npm源地址,在终端输入以下命令npm config list会看到官方的npm源metrics-registry = "https://registry.npmjs.org/"国内常用的镜像地址如淘宝npm:https://registry.npm.taobao.org/修改registry地址很简单,在终端输入npm set r...

2018-04-27 13:57:08 338

原创 git的add和commit命令

首先先明白两个概念:工作区 和 版本库(Repository) 工作区(Working Directory):就是可以在电脑上看到的目录,比如我建的readme.txt文件,就是一个工作区版本库(Repository): 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创...

2018-04-27 13:56:06 2426

原创 对深拷贝和浅拷贝的理解

简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果A没变,那就是深拷贝,自食其力。此篇文章中也会简单阐述到栈堆,基本数据类型与引用数据类型,因为这些概念能更好的让你理解深拷贝与浅拷贝。我们来举个浅拷贝例子:let a=[0,1,2,3,4],b=a;console.log(a===b);a[0]=1;console.log(a,b);嗯...

2018-03-21 10:25:03 284

转载 【CSS】深入理解BFC原理及应用

BFC的定义Block Formatting Context,中文直译为块级格式上下文。BFC就是一种布局方式,在这种布局方式下,盒子们自所在的containing block顶部一个接一个垂直排列,水平方向上撑满整个宽度(除非内部盒子自己建立了新的BFC)。两个相邻的BFC之间的距离由margin决定。在同一个BFC内部,两个垂直方向相邻的块级元素的margin会发生“塌陷”。文档这里也间接指出...

2018-03-19 11:37:23 386

转载 JavaScript中的模块化之AMD和CMD

前言: 为什么我们需要模块化开发,模块化开发的好处有哪些? 首先我们先说一下非模块化的开发方式带来的弊端。 非模块化开发中会导致一些问题的出现,变量和函数命名可能相同,会造成变量污染和冲突,并且出错时候很难排查。耦合程度高,不符合软件开发中的高内聚和低耦合的原则,所以我们就可以总结一下模块化开发的好处了: ① 解决项目中的变量污染问题。 ② 开发效率高,有利于多人协同开发。 ③ 职责单一,方便代码...

2018-03-19 10:53:14 1479

转载 ES6解构赋值的应用场景

解构赋值,即对某种结构进行解析,然后将解析出来的值赋值给相关的变量,常见的有数组、对象、字符串的解构赋值等一、变量交换1.ES6的方式{ let a=1; let b=2; [a,b]=[b,a]; console.log(a,b);}输出为2 12.ES5的方式采用中间变量的方式进行存储二、获取函数返回值是数组的情况1.ES6{ function f(){ ret...

2018-03-18 11:23:32 1133

转载 JavaScript之数组去重

首先,我想到的是另建一个结果数组,用来存储原始数组中不重复的数据。遍历原始数组依次跟结果数组中的元素进行比较,检测是否重复。于是乎,我写出了如下代码A: 1 Array.prototype.clearRepetitionA = function(){ 2 var result = []; 3 var isRepetition; 4 for(var i=0; i<...

2018-03-18 10:58:53 162

原创 前端框架官网网址汇总

vuejs中文官网:http://cn.vuejs.org/vuejs源码:https://github.com/vuejs/vuevuejs官方工具:https://github.com/vuejs   比如:routerhttps://github.com/vuejs/awesome-vuevuejs官方论坛:http://forum.vuejs.org/react: https://reac...

2018-03-17 12:16:30 1029 1

转载 HTTP状态码汇总

HTTP状态码的分类HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:分类分类描述1**信息,服务器收到请求,需要请求者继续执行操作2**成功,操作被成功接收并处理3**重定向,需要进一步的操作以完成请求4**客户端错误,请求包含语法错误或无法完成请求5**服务器错误,服务器在处理请求的过程中发生了错误HTTP状态码表(...

2018-03-17 09:15:50 237

原创 关于this、闭包的面试题

1、下面代码输出for(var i=0;i<5;i++){        setTimeout(function(){     console.log(i)       },0)   } 2、下面代码输出,怎么输出for(var i=0;i<5;i++){  (function(i){setTimeout(function(){ console.log(i)  },1000*i)})(...

2018-03-16 19:48:07 306

转载 js中__proto__和prototype的区别和关系?

正好这段时间在重新看这部分,写一篇回答来梳理一下吧。 proto(隐式原型)与prototype(显式原型) 1.是什么显式原型 explicit prototype property:每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数的原型对象。Note:通过Function.prototype.bind方法构造出来的函数是个例外,它没有prototype属性。(感谢...

2018-03-15 21:54:25 1105

转载 JavaScript 中的正常任务与微任务

正常情况下,JavaScript的任务是同步执行的,即执行完前一个任务,然后执行后一个任务。只有遇到异步任务的情况下,执行顺序才会改变。这时,需要区分两种任务:正常任务(task)与微任务(microtask)。它们的区别在于,“正常任务”在下一轮Event Loop执行,“微任务”在本轮Event Loop的所有任务结束后执行。console.log(1);setTimeout(functi...

2018-03-15 21:49:03 472

转载 详解使用CSS3绘制矩形、圆角矩形、圆形、椭圆形、三角形、弧

1.矩形绘制矩形应该是最简单的了,直接设置div的宽和高,填充颜色,效果就出来了。2.圆角矩形绘制圆角矩形也很简单,在1的基础上,在使用css3的border-radius,即可。3.圆根据圆的特性,在2的基础上,设置div的宽和高一直,为正方形,然后设置border-radius为50%即可。4.椭圆椭圆也很简单了,只需要在3的基础上,让div的宽和高不一致即可。为了更好看,建议宽设置为高的1....

2018-03-15 17:06:53 7570

原创 2018前端面试题总结

1.   对深拷贝的理解,如何进行深拷贝2.   项目中使用的压缩工具3.   图片预加载是怎么实现的,是前台实现还是后台4.   打包工具5.   开发中,怎么兼容es6新语法6.   事件委托的理解7.   闭包都什么时候用到        a.匿名自执行函数 b.封装 c.实现类和继承8.   数组去重都哪些方法,es6里有一个方法9.   怎么继承一个对象的所有属性   a.原型继承 b....

2018-03-15 17:01:51 2492 1

转载 js中的事件委托或是事件代理详解

概述:那什么叫事件委托呢?它还有一个名字叫事件代理,JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。那这是什么意思呢?网上的各位大牛们讲事件委托基本上都用了同一个例子,就是取快递来解释这个现象,我仔细揣摩了一下,这个例子还真是恰当,我就不去想别的例子来解释了,借花献佛,我摘过来,大家认真领会一下事件委托到底是一个什么原理:有三个...

2018-03-15 16:55:17 143

空空如也

空空如也

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

TA关注的人

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