自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CORS跨域共享相关响应头

CORS是一个W3C标准,Cross-origin resource sharing,跨域资源共享,允许浏览器向跨源服务器发出XMLHttpRequest请求,解决了AJAX只允许同源使用的限制。,单位为秒,在此期间不用发出另一条预检请求,不指定时即使用默认值,Chrome默认5秒。字段,取值可以是请求时Origin字段的值,也可以是*,表示接受任意域名的请求。字段,取值是逗号分隔的一个字符串,设置服务器支持的跨域请求的方法。请求分为简单请求和非简单请求,非简单请求会发送预检请求。字段,布尔值类型,表示。

2023-06-22 16:57:55 857 1

原创 图文解析原型链

1、显式原型:prototype 隐式原型:proto;2、js对象分为【函数对象】和【普通对象】,_proto_是普通对象的属性,prototype是函数对象才有的属性;3、prototype指向一块【内存】,内存里有【公用的属性】,而_proto_指向同一块内存;4、js是【基于原型】的语言,当调用一个对象的的属性时,如果对象没有该属性,就会去找原型的属性,如果没有,则会去找原型的原型的属性,直到最后返回null为止,null没有原型,这种查找方式成为【原型链】;带着以上四句话去理解这个.

2022-05-14 17:33:43 116 1

原创 ES6|Promise解决回调深渊(callback hell)

promise是ES6提供的异步编程的一种解决方案,比传统的解决方案——回调函数和事件更加优雅。在讲promise之前有必要补充点异步操作的知识。Ajax的callback hell (回调深渊)Ajax (异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。下面将一个aja

2020-08-19 11:18:49 786 2

原创 ES6|微任务—promise

promise是ES6提供的异步编程的一种解决方案,比传统的解决方案——回调函数和事件更加优雅。在讲promise之前有必要补充点异步操作的知识。JS的执行阶段js引擎的执行阶段分为三个部分:语法分析—>预编译—>执行阶段,这里来讲讲第三个阶段——执行阶段。下面通过几个问题来一步步理解执行阶段。Ajax回调地狱...

2020-08-19 00:34:19 1538 1

原创 前端的浅拷贝与深拷贝

前端的浅拷贝与深拷贝深拷贝和浅拷贝概念Object.assign()是浅拷贝赋值运算符(=)是浅拷贝JSON的两个方法实现一个深拷贝深拷贝和浅拷贝概念数据类型分为两种:基本数据类型和引用数据类型。而浅拷贝和深拷贝的概念是对于引用数据类型来讲的。浅拷贝:浅拷贝是对象(或数组)共用的一个内存地址,对象的变化相互印象。对象的深拷贝:简单理解深拷贝是将对象(或数组)放到新的内存中,两个对象的改变不会相互影响。由此可见,判断是深拷贝还是浅拷贝最直接的方法是改变源对象(被拷贝的对象)的值,如果目标对象受之

2020-08-17 08:33:55 517

原创 map——ES6的新数据结构

map——ES6的新数据结构基本语法遍历方式weakMap基本语法ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。实例化let map = new Map([iterable])Iterable 可以是一个数组或者其

2020-08-16 17:22:25 174

原创 set—ES6的新数据结构

set—ES6的新数据结构set基本语法set的遍历方式weakset在以往的javascript中,通常用Array和Object来存储数据,但是在频繁操作数据的过程中查找或者统计并需要手动来实现,并不能简单的直接使用。 比如如何保证 Array 是去重的,如何统计 Object 的数据总数等,必须自己去手动实现类似的需求,不是很方便。 在 ES6 中为了解决上述痛点,新增了数据结构 Set 和 Map,它们分别对应传统数据结构的“集合”和“字典”。set基本语法Set类似于数组,但是数组内元素不重

2020-08-16 16:14:09 117

原创 ES6|新原始数据类型:Symbol

ES6引入了一种新的原始数据类型Symbol,表示独一无二的。是javascript的第七种数据类型。另外六种是:undefined、null、String、Number、Object声明方式Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。let s1=Symbol()let s2=Symbol()console.

2020-08-16 14:13:15 317

原创 ES6的类与继承

ES6类与继承声明类setters&&getters静态方法继承声明类Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。这句话摘自阮一峰老师的博客,这句话放在ES5中可以这么说,但是放到ES6中就不那么合适,因为ES6用class关键字规范了类的声明。先来看看在ES6之前,是怎么声明类的:let Animal = function(type)

2020-08-16 12:30:36 153

原创 ES5类与继承

ES5的类与继承搞清楚ES5类主要是要搞清楚静态属性、静态方法、实例属性、实例方法的概念。上代码来看看://ES5自定义类function People(name,age){ //实例属性 定义在构造函数里 this.name=name this.age=age // this.showName=function(){//每次创建对象都要new Function() 通常不把方法写在类里而是写在原型上 // console.log("我的名字是"+th

2020-08-16 01:48:43 178 1

原创 ES6—Object新特性

ES6—Object新特性属性简洁表达法属性名表达式Object.is()判断两个对象是否严格相等Object.assign()对象的遍历方式方式一:for..in方式二:Object.keys()方式三:Object.getOwnPropertyNames()方式四:Reflect.ownKeys()属性简洁表达法在ES6之前,对象的表示都是以键值对的形式:let name = 'hello'let age = 11let obj = { name: name, age:

2020-08-10 22:34:05 290

原创 ES6|Function——箭头函数

ES6|Function——箭头函数箭头函数形式箭头函数对this的处理方式箭头函数不可以当作构造函数箭头函数不可以使用arguments参数箭头函数形式箭头函数是ES6的重要内容,为开发者带来了很多福利,首先,先来看看箭头函数的形式。在此之前,如果要声明一个函数,我们需要这样做:function hello() { console.log('say hello')}// 或let hello = function() { console.log('say hello')}

2020-08-10 11:03:21 737

原创 ES6|扩展运算符/Rest参数——“...“

扩展运算符/Rest参数...扩展运算符Rest参数扩展运算符和Rest参数都用符号"…"来表示,但是表达的确实相反的意思。扩展运算符是将固定的数组内容“打散”到参数里去,而Rest参数是将不定的参数“收敛”到数组中。扩展运算符应用一:扩展运算符拆分数组function sum(x = 1, y = 2, z = 3) { return x + y + z}console.log(sum(...[4])) // 9console.log(sum(...[4, 5])) // 12c

2020-08-10 08:28:50 354

原创 ES6—Function新特性

ES6—Function新特性默认参数函数作用域length属性name属性默认参数ES5中,函数的参数都是写在函数体里的function foo(x,y){ y=y||'world' console.log(x,y)}foo('hello','jim')//hello jimfoo('hello',0)//hello world但是当函数多个参数都涉及到初始化时,这样写显然不太优雅,ES6就提供了一种写法:function foo(x,y='world'){ co

2020-08-09 23:00:25 627

原创 ES6常量声明方式——const

ES6常量声明方式——const定义常量const声明常量拥有块级作用域const不存在变量提升上一篇说了ES6变量声明方式let( https://blog.csdn.net/juliaandjulia/article/details/107524107),今天就来聊聊ES6常量的声明方式。定义常量在ES5中定义一个常量:Object.defineProperty(window,'PI',{ value:3.14, writable: false})console.log(PI

2020-08-09 16:26:31 792

原创 小例子理解ES6新声明方式let

let是ES6新的变量声明方式,相当于ES5中的var,那么相比于var,let又有什么新特性呢?今天就来聊聊let的特性。1、let不属于顶层对象windowvar声明的变量属于window对象,可以用 window.变量名 调用,但是let声明的变量不属于window对象。下面结合例子来说明一下:var的例子var a=5 //var定义该作用域内的全局变量console.log(window.a)//5 (a是window的变量)delete a//delete只能删除对象不能删除变量c

2020-08-09 15:32:37 216 1

原创 Github配置公钥并克隆项目到本地

Github配置公钥并克隆项目到本地现在无论是Github还是国内的码云这些代码本版管理工具都支持ssh协议的git服务,这就要求在使用ssh协议访问仓库之前需要配置好仓库的ssh公钥,以github为例,如果你要使用它的git仓库,会要求你生成公钥和私钥。公钥是放在服务器的,私钥是放在本地的,当你要push代码到服务器,服务器会要求你出示私钥,如果配对成功则允许你push,配对失败会拒绝push。话不多说,以Github为例看看怎么配置公钥默认你已经下载好了gitbash,打开gitbash,输入:

2020-08-02 11:58:04 1160 1

原创 ES6|数组的扩展

类数组/伪数组在 JavaScript 的世界里有些对象被理解为数组比如函数中的 arguments、DOM中的 NodeList等。当然,还有一些可遍历的对象,看上去都像数组却不能直接使用数组的 API,因为它们是伪数组(Array-Like),下面根据例子来理解伪数组与数组的区别:伪数组具备两个特征:1. 按索引方式储存数据 2. 具有length属性常见伪数组如下(此处定义的伪数组在后文伪数组转换成数组时会用到)://使用instanceof来检测某个对象是否是数组的实例//HTMLColl

2020-07-20 22:01:12 144

原创 ES6|数组遍历方式

ES6|数组遍历方式find()findIndex()for ofES6新增了以下三种数组遍历方法,若要与ES5对比学习,可参考我的另外一篇博客——ES5中数组的各种遍历方法(链接: link.)find()array.find(function(currentValue,index,arr), thisValue)*elem必需,表当前元素*index可选,表当前元素索引值*array可选,表当前元素所属的数组对象*thisValue可选。传递给函数的值一般用 “this” 值。如果这个参数

2020-07-20 20:05:47 630

原创 ES6新语法|解构赋值

ES6新语法|解构赋值什么叫解构赋值?数组解构赋值对象解构赋值字符串解构赋值应用什么叫解构赋值?解构赋值简单来说:就是从数组(字符串当成数组解构)和对象提取值,对变量进行赋值。 tip:解构赋值重点是在赋值,赋值的元素是要拷贝出来赋值给变量,赋值的元素本身是不会被改变的数组解构赋值//旧语法let arr=[1,2,3]let a=arr[0]let b=arr[1]let c=arr[2]*关键:模式的匹配 右边什么结构,左边就写成什么结构//数组解构赋值let [a,b,c]=[

2020-07-19 23:09:36 220

原创 ES5|数组的各种遍历方式

ES5|数组的遍历方式之后所有例子都使用以下这个数组:let arr=[1,2,3,2,4]for循环//forfor(let i=0;i<arr.length;i++){ console.log(arr[i])}1 2 3 2 4forEach()array.forEach(function(elem,index,array), thisValue)*elem必需,表当前元素*index可选,表当前元素索引值*array可选,表当前元素所属的数组对象*thi

2020-07-19 23:02:51 412

空空如也

空空如也

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

TA关注的人

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