自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试常考的Vue知识点

一、对于MVVM的理解MVVM是Model-View-ViewModel的缩写。Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑View代表UI组件,它负责将数据模型转换成UI 展现出来ViewModel监听模型数据的改变和控制视图的行为、处理用户交互,简单理解就是一个同步View和Model的对象,连接Model和View。在MVVM架构下,View和Model没有直接的联系,而是通过ViewModel进行交互的,Model和ViewModel之间的交互是双向的,因此Vie

2020-07-26 15:05:34 417 2

原创 由浅入深 65个JS常考面试题

由浅入深逐个击破 JS常考面试题(上篇)1、 介绍一下JS的基本数据类型,值是如何存储的?JavaScript一共有8种数据类型,其中有7种基本数据类型:Undefined、Null、Boolean、Number、String、Symbol(es6新增,表示独一无二的值)和BigInt(es10新增);一种引用类型Object(本质上是由一组无序的名值对组成的),里面包含function、Array、Date,JS不支持任何自定义类型的机制,所有的值都是上述的八种数据类型之一。如何存储???基本数

2020-07-23 09:49:41 1099

原创 详解浏览渲染原理

我们都知道JS有一个JS引擎,那么执行渲染也有一个渲染引擎,同样,渲染引擎在不同的浏览器中也是不同的。浏览器接收到HTML文件并转换成DOM树当我们打开一个网页时,浏览器都会去请求对应的html文件,虽然平时我们写代码的时候都会分为HTML、CSS、JS文件,也就是字符串,但是计算机硬件不理解这些字符串,所以在网络中传输的内容都是0和1这些字节数据。当浏览器接收到这些字节数据以后,它会将字节数据转换为字符串,也就是我们写的代码。当数据转换成字符串以后,浏览器会先将这些字符串通过词法分析转换成标记,这

2020-07-26 07:22:38 154

原创 JS中数组去重的九种方式

一、利用ES6中的Set方法去重Set为ES6中新增的对象,允许存储任何类型(原始值或引用值)的唯一值let arr = [1,0,0,2,9,8,3,1]; function unique(arr) { return Array.from(new Set(arr)) } console.log(unique(arr)); // [1,0,2,9,8,3]  or6      console.log(...n

2020-07-25 15:24:22 150

原创 详解跨域问题

同源策略在说跨域之前,先来了解一下“同源策略”什么是源?源=协议+域名+端口号。如果两个url的协议、域名、端口号完全一致,那么这两个url就是同源的。我们可以通过window.origin或location.origin得到当前源。什么是同源策略?同源策略:不同源之间的页面不能互相访问数据。浏览器规定:如果JS运行在源A里,那么就只能获取源A的数据,不能获取 源B的数据,即不允许跨域假设 wang.com/index.html引用了ergou.com/1.js,那么就说1.js运行在源w

2020-07-24 09:05:35 622

原创 详解XSS攻击与CSRF攻击

什么是XSS攻击?XSS中文名称就是跨站脚本攻击。XSS的重点不在于跨站点而在于脚本的执行,那么XSS的原理是:恶意攻击者在web页面中会插入一些恶意的script代码。当用户浏览该页面的时候,那么嵌入到web页面中的script代码会执行,因此会达到恶意攻击用户的目的。XSS攻击分为如下几类:反射型、存储型、DOM-based型,反射型和DOM-based型可以归类为非持久的XSS攻击,存储型可以归类为持久性的XSS攻击。反射型XSS简而言之,代码出现在url中,作为输入提交到服务器端原理:反射型

2020-07-23 20:36:34 649 2

原创 详解CommonJS模块与ES6模块

详解CommonJS模块与ES6模块历史上,JS一直没有模块体系,在ES6之前,最主要的是CommonJS和AMD两种。前者用于服务器,后者用于浏览器,ES6在语言标准的层面上实现了模块功能,使用简单,称为浏览器和服务器通用的模块解决方案CommonJS模块:上面代码实质上就就是整体加载fs模块,生成一个_fs对象,然后在从这个对象上读取方法,这种加载称为运行时的加载,因为只有运行的时候才会得到这个对象,导致完全没有办法在编译的时候做“静态优化”ES6模块:ES6模块不是对象,而是通过expo

2020-07-18 15:18:13 4030

原创 类的prototype属性和__proto__属性

类的prototype属性和__proto__属性大多数浏览器的ES5中,每一个对象都有__proto__属性,指向对应的构造函数的prototype属性。Class作为语法糖,同时有prototype属性和__proto__属性,因此存在两条继承链(1)子类的__proto__属性,表示构造函数的继承,总是指向父类(2)子类的prototype属性的__proto__属性表示方法的继承,总是指向父类的prototype属性class A {}class B extends A {}B.

2020-07-18 08:53:25 470

原创 一文搞懂super关键字

一文搞懂super关键字super关键字可以当做函数使用也可以当做对象使用。在这两种情况下用法完全不同情况一:super为函数的情况super作为函数调用的时候,代表父类的构造函数,es6要求子类的构造函数必须执行一次super函数class A{}class B extends A { constructor(){ super();}}子类B的构造函数之中的super(),代表调用父类的构造函数。这是必须的,否则js会报错。注意,super虽然代表的是父类A的构造函数,但是返回

2020-07-18 00:17:47 1202

原创 五种方式实现数组的扁平化

五种方式实现数组的扁平化数组的扁平化就是将一个多维数组变成一个一维数组[1,2,[3,4,[5,6]]]------>[1,2,3,4,5,6]方式一:reduce+递归reduce()方法+遍历思路:遍历数组的每一项,若值为数组则递归遍历,否则concatfunction flatten(arr) { return arr.reduce((result,item)=>{ return result.concat(Array.isArray(item)?f

2020-07-17 21:03:45 284

原创 浅谈Object.assign()方法

基本用法:Object.assign()方法用于对象的合并,将源对象的所有可枚举属性复制到目标对象里面去const target = { a: 1 };const source1 = { b: 2 };const source2 = { c: 3 };Object.assign(target, source1, source2);target // {a:1, b:2, c:3}方法的第一个参数是目标对象,后面的参数是源对象注意:浅拷贝Object.assign()方法实行的是浅

2020-07-16 09:54:22 575

空空如也

空空如也

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

TA关注的人

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