自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黄黄黄一边敲代码一边写出来的博客

拥有特立独行却不被孤立的魅力,怀着与世无争却有迹可循的野心

  • 博客(82)
  • 收藏
  • 关注

原创 Vue3迁移指南

读Vue3迁移指南官方文档的一些个人笔记

2023-07-16 16:31:10 670

原创 reduce(Math.pow) 的使用 及 reduce 的一些常见用法

reduce(Math.pow) 的使用[3, 2, 1].reduce(Math.pow);[3].reduce(Math.pow);[].reduce(Math.pow, 3);[].reduce(Math.pow);大家知道以上三个表达式都会返回什么值吗?相信大家都会 Math.pow 和 reduce() 的使用有所了解,但是大家真的完全了解它们吗?Math.pow(m, n) 接受两个参数,返回的结果是 m 的 n次幂。比如 Math.pow(3, 2) 返回的是 3 的二次

2022-04-26 22:04:52 694

原创 JavaScript事件(一)

JavaScript事件(一)一、事件流1、事件冒泡IE事件流被称为事件冒泡,这是因为事件被定义为从最具体的元素(文档树中最深的节点)开始触发,然后向上传播至没有那么具体的元素(文档)。2、事件捕获事件捕获是从最不具体的节点应该最先收到事件,而最具体的节点最后收到事件。事件捕获实际上是为了在事件达到目标前拦截事件。3. DOM事件流DOM2 Events 规定事件流分为三个阶段:事件捕获、到达目标和事件冒泡。事件捕获最先发生,为提前拦截事件提供了可能。然后,实际的目标接收到事件。最后一个阶段是

2022-03-12 23:42:56 1221 1

原创 JS 类型和语法1

JS 类型和语法1JavaScript类型Javascript有七种内置类型:空值(null)未定义(undefined)布尔值(boolean)数字(number)字符串(string)对象(object)符号(symbol, ES6 新增)我们可以用 typeof 运算符来查看值的类型,它返回的是类型的字符串值。但是其中类型和他们的字符串值并不一一对应:其中 typeof null === “object” // true 比较特殊,我们需要使用符合条件来检测 null 值的

2022-02-08 22:54:04 520 1

转载 循环加载:a 依赖 b,b 依赖 c, c 依赖 a 加载情况解析

循环加载:a 依赖 b,b 依赖 c, c 依赖 a 加载情况解析“循环加载”(circular dependency)指的是,a脚本的执行依赖b脚本,而b脚本的执行又依赖a脚本。// a.jsvar b = require('b');// b.jsvar a = require('a');通常,“循环加载”表示存在强耦合,如果处理不好,还可能导致递归加载,使得程序无法执行,因此应该避免出现。但是实际上,这是很难避免的,尤其是依赖关系复杂的大项目,很容易出现a依赖b,b依赖c,c又依赖a这

2022-02-06 21:50:15 1450

转载 阮一峰ES6入门读书笔记(十六):Moudle

阮一峰ES6入门读书笔记(十六):Moudle在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。ES6 模块的设计思想是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonJS 和 AMD 模块,都只能在运行时确定这些东西。比如,CommonJS 模

2022-01-25 16:35:59 449

转载 阮一峰ES6入门读书笔记(十五):Class

阮一峰ES6入门读书笔记(十五):ClassClass 基本语法ES6 的 class 可以看作是一个语法糖,它的绝大部分功能,ES5 都可以做到。可以通过下面两段写法来比较两者的不同//ES5写法function Point(x, y) { this.x = x; this.y = y;}Point.prototype.toString = function () { return '(' + this.x + ', ' + this.y + ')';};var p = n

2022-01-24 15:31:57 5201

转载 阮一峰 ES6 入门读书笔记(十四):async 函数

阮一峰 ES6 入门读书笔记(十四):async 函数1. 含义ES2017 标准引入了 async 函数,使得异步操作变得更加方便。async 函数是什么?一句话,它就是 Generator 函数的语法糖。async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await,仅此而已。async函数对 Generator 函数的改进,体现在以下四点。内置执行器async函数的执行,与普通函数一模一样,只要一行。更好的语义async和await,比

2022-01-22 14:24:20 1849

转载 阮一峰 ES6 入门读书笔记(十三):Generator 函数的语法

阮一峰 ES6 入门读书笔记(十三):Generator 函数1. 简介基本概念Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。Generator 函数有多种理解角度。语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。形

2022-01-07 08:36:57 1157 3

转载 阮一峰 ES6 入门读书笔记(十二):Iterator 和 for...of 循环

阮一峰 ES6 入门读书笔记(十二):Iterator 和 for…of 循环Iterator(遍历器)的概念遍历器是一种为数组和对象,ES6后又新添加了 Map 和 Set 这些数据集合提供同一的接口机制,来处理所有不同的数据结构。任何数据结构只要部署了 Iterator 接口,就可以完成遍历操作。Iterator 的作用有三个:一是为各种数据结构,提供一个统一的、简便的访问接口;二是使得数据结构的成员能够按照某种次序排列;三是 ES6 创造了一种新的遍历命令 for…of 循环,Iterator

2022-01-06 16:20:11 256

转载 阮一峰ES6入门读书笔记(十一):Promise

阮一峰ES6入门读书笔记(十一):PromisePromise 的含义Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理更强大。所谓Promise,简单来说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。Promise 对象有以下两个特点。对象的状态不受外界影响。Promise 对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。一旦状态改变,就不会再变,任何时候都可

2021-12-30 16:32:54 2043

转载 阮一峰ES6入门读书笔记(十):Proxy

阮一峰ES6入门读书笔记(十):Proxy 和 Reflect1. 概述Proxy用于修改某些操作的默认行为,可以理解为,在魔表对象之前架设了一层“拦截”,外界对该对象的访问,都必须通过这层拦截。var obj = new Proxy({}, { get: function (target, propKey, receiver) { console.log(`getting ${propKey}!`); return Reflect.get(target, propKey, rec

2021-12-28 10:43:13 2414

转载 阮一峰ES6入门读书笔记(九):Set 和 Map

阮一峰ES6入门读书笔记(九):Set 和 Map1.Set基本用法ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。const s = new Set();[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));for (let i of s) { console.log(i);}// 2 3 5 4Set函数可以接受一个数组(或者具有 ite

2021-12-25 14:10:37 446

转载 阮一峰读书笔记(八):Symbol

阮一峰读书笔记(八):Symbol1. 概述ES5 的对象属性名都是字符串,柘荣哟造成属性名冲突。ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是 JavaScript 的第七种数据类型,前六种是:undefined, null, boolean, String, Number, Object。Symbol 值通过 Symbol 函数生成。Symbol 函数前不能使用 new 命令,否则会报错。这是因为生成的 Symbol 是一个原始类型的值,不是对象。typeof 运算符的结

2021-12-24 13:32:53 460

转载 阮一峰ES6入门读书笔记(七):运算符的拓展

阮一峰ES6入门读书笔记(七):运算符的拓展1. 指数运算符ES6新增了一个指数运算符(**)。2 ** 2 // 42 ** 3 // 8这个运算符的一个特点是右结合,而不是常见的左结合。多个指数运算符连用时,是从最右边开始计算的。// 相当于 2 ** (3 ** 2)2 ** 3 ** 2// 512指数运算符可以与等号结合,形成一个新的赋值运算符(**=)。let a = 1.5;a **= 2;// 等同于 a = a * a;let b = 4;b **= 3;

2021-12-21 16:47:33 259

转载 阮一峰ES6入门读书笔记(六):对象

阮一峰ES6入门读书笔记(六):对象属性的简洁表示法ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。const foo = 'bar';const baz = {foo};baz // {foo: "bar"}// 等同于const baz = {foo: foo};上面的代码中,变量 foo 直接写在大括号里面。这时,属性名就是变量名,属性值就是变量值。除了属性可以简写,方法也可以简写const o = { method() {

2021-12-19 11:37:04 542

转载 阮一峰ES6入门读书笔记(五):数组

阮一峰ES6入门读书笔记(五):数组1. 拓展运算符拓展运算符是三个点(…)。它好比 rest 参数的你晕眩,讲一个数组转为用逗号纷纷的参数序列。console.log(...[1, 2, 3])// 1 2 3console.log(1, ...[2, 3, 4], 5)// 1 2 3 4 5[...document.querySelectorAll('div')]// [<div>, <div>, <div>]该运算符主要用于函数调用,尤其是

2021-12-14 13:48:55 442

转载 阮一峰ES6入门读书笔记(四):函数

阮一峰ES6入门读书笔记(四):函数rest 参数ES6 引入了 rest 参数(形式为 …变量名),用于获取函数的多余参数,这样就不需要使用 arguments 对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。function add(...values) { let sum = 0; for (var val of values) { sum += val; } return sum;}add(2, 5, 3) // 10下面是一个

2021-12-12 15:56:50 2665 1

转载 阮一峰ES6入门读书笔记(三):字符串

阮一峰ES6入门读书笔记(三):字符串字符串的拓展加强了对 Unicode 的支持字符串添加了遍历器接口,使得字符串可以被 for…of 遍历允许直接输入字符,以及字符的转义形式JSON.stringify() 的改造模板字符串字符串新增的常用方法1. 实例方法:includes(), startsWith(), endsWith()传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6 又提供了三种新方法。

2021-12-11 10:39:04 256

转载 ES6入门:变量和解构赋值

阮一峰ES6入门读书笔记(二):变量和解构赋值1. 基本用法ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。以下是一些常见的结构赋值:let [foo, [[bar], baz]] = [1, [[2], 3]];foo // 1bar // 2baz // 3let [ , , third] = ['foo', 'bar', 'baz'];third // 'baz'let [x, , y] = [1, 2, 3, 4];x // 1y // 3

2021-12-10 11:40:02 229

转载 ES6入门:let和const

阮一峰ES6入门读书笔记(一):let和constlet基本用法let 的用法类似于 var,但是所声明的变量,只在 let 命令所在的代码块有效。{ let a = 10; var b = 1;}a // ReferencError: a is not defined.b // 1由上述代码可知,let 声明的变量 a 只在块作用域中有效,在块作用域之外报错,var 声明的变量 b 则可以有效访问到。for 循环的计数器,就很适合使用 let 命令。for (let i = 0;

2021-12-09 11:47:14 191

原创 JavaScript script标签与文档模式

JavaScript <script>标签与文档模式1. 文档模式首先说一下文档模式吧IE5.5 发明了文档模式的概念,即可以使用 doctype 切换文档模式。最初的文档模式有两种:混杂模式和标准模式。混杂模式让 IE 像 IE5 一样(支持一些非标准的特性)。标准模式让 IE 具有兼容标准的行为。2.<script>标签script标签有以下几种元素:src:可选。表示包含要执行的代码的外部文件。async:可选。表示应该立即开始下载脚本,并在下载完后开始执行。

2021-10-31 17:47:09 422

原创 WebAPI

属性的操作getAttribute():获取一个img的src,或a链接的hrefnode.getAttribute('id')creatAttribute():用于创建(或获取)属性名attribute = document.createAttribute(name)//参数name,是属性的名称setAttribute():用于设置属性和值var node = document.getElementById("div1");node.setAttribute("my_att

2021-06-25 23:57:36 162

原创 JavaScript 事件注册

事件注册事件注册有哪些方法on + “event”例如:onclick/onmouseover…支持最广。但是要在一个元素上多次添加同一事件,此时就无能为力了,只能以最后一次绑定的事件为准。addEventListenerW3C 标准方法,功能也最强大,支持添加多个事件//element.addEventListener(type,listener,useCapture);obj.addEventListener('click', method1, false)obj.addEventLis

2021-06-25 23:56:51 767

原创 Event Loop事件循环机制

Event Loop事件循环机制一、JS单线程执行却不堵塞的秘密在开始之前,我们先看一张图:此图为事件在浏览器中的角色,不用看太久,有个概念就好,等你读完这篇文章,就能看懂这张图了。首先要声明,事件循环是与 js 的运行环境相关的机制,它与 js (引擎) 本身无关。常见的运行环境有浏览器、Node.js,每种运行环境可能都有自己实现事件循环的方式,而本文只探讨浏览器的时间循环。为什么要进行事件循环?因为 js 是单线程执行的,一个函数运行过久就会卡住后面的函数执行,如果这些函数恰好是做与 UI

2021-06-01 09:58:06 312

原创 JS详解——对象

JS详解——对象一、声明语法对象可以通过两种形式定义:声明(文字)形式和构造形式。对象的文字语法如下:var myobj = { key: value // ...}构造形式大概是这样的:var myobj = new Object()myObj.key = value构造形式和文字形式生成的对象是一样的。唯一的区别是,文字形式中你可以添加多个键值对,而构造形式中你必须逐个添加属性。二、类型在JavaScript中一共有六种主要类型(术语是”语言类型“):stringnu

2021-05-07 23:00:09 259 2

原创 vue-重塑筋脉-组件

vue-重塑筋脉-组件1.虚拟DOM与diff算法 key的作用虚拟DOM是vue针对真实dom进行增加或删除的操作的时候,需要将上一个dom树删除再重新生成一个新的dom树,而这样是非常耗费资源并且繁琐的。所以vue就采用了这样一个方法解决了这个问题,首先,开发者需要将dom树的每个节点赋予一个key值,这个key必须是唯一的。而dom发生变化时,首先会通过diff算法,比较更新后的虚拟dom与真实的dom有什么不同,再通过相同key值不变的保留,变化的进行改变来达成增加或删除的操作。这样,没改变值的

2021-05-02 22:46:33 251 1

原创 vue-新的信使fetch&axios

vue-新的信使fetch&axiosfetch​ why:​ XMLHttpRequest 是一个设计粗糙的 API,配置和调用方式非常混乱, 而且基于事件的异步模型写起来不友好。​ fetch的问题是兼容性不好​ 能够兼容ie8的polyfill: https://github.com/camsong/fetch-ie8(原理是不能兼容的地方就是用XMLHttpRequest来写)//getfetch("./json/test.json").then(res=>res.

2021-05-02 22:45:55 104

原创 vue-响应式渲染

vue_响应式渲染一、模板语法1. 插值​ a.文本{{}}​ b.纯HTML​ v-html,防止XSS,CSRF(​ (1)前端过滤​ (2)后台转义(< > &lt; &gt;)​ (3)给cookie加上属性http1 <a href=javascript:location.href='http://www.baidu.com?cookie='+document.cookie>click</a>​ c.表

2021-05-02 22:45:25 399 2

原创 Vue-饲料加工厂-过滤器

Vue-饲料加工厂-过滤器1.过滤器https://cn.vuejs.org/v2/guide/filters.htmlVue.js允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和v-bind表达式(后者从2.1.0+开始支持)。过滤器应该被添加在JavaScript表达式的尾部,由“管道”符号表示:<!-- 在双花括号中 -->{{message | capitalize}}<!--在'v-bind'中 --><div

2021-05-02 22:44:48 102

原创 Vue-怀旧经典-指令

Vue-怀旧经典-指令1.自定义指令(1)自定义指令介绍directives——对普通DOM元素进行底层操作//注册一个全局自定义指令`v-focus`Vue.directive('focus',{ //当被绑定元素插入到dom中时…… inserted: function(el){ //聚焦元素 el.focus() }})如果想注册局部指令,组件中也接受一个directives的选项:directives:{ focus:{ //指令的定义 inserted:fu

2021-05-02 22:44:09 189

原创 Vue-独立日-单文件组件

Vue-独立日-单文件组件1. 单文件组件https://cn.vuejs.org/v2/guide/single-file-components.htmla.<template>html代码</template><script>js代码</script><style>css代码</style>b.<template>html代码</template><script sr

2021-05-02 22:43:32 112

原创 vue-痴汉的路引-路由

vue-痴汉的路引-路由**前言:本文仅用供学习之后理清知识点查看,详细知识点建议访问官方网站:**https://router.vuejs.org/1.SPA概念单页面应用(SinglePage Web Application,SPA)多页面应用(MultiPageApplication,MPA)组成一个外壳和多个页面片段组成多个完整页面构成资源共用(css,js)共用,只需在外壳部分加载不共用,每个页面都需要加载刷新方式页面局部刷新或更改整页刷新

2021-05-02 22:43:02 1181 1

原创 Bootstrap

Bootstrap一、布局容器Bootstrap需要为页面内容和栅格系统包裹一个.container容器。框架中提供了两个类.container 类用于固定宽度并支持响应式布局的容器<div class = "container">...</div>.container-fluid 类用于100%宽度,占据全部视口(viewport)的容器。<div class="container-fluid">...</div>注意:由于pa

2021-05-01 23:09:51 206

原创 字符串

字符串访问字符串的字符:字符串.length 访问字符串中字符的个数。【注】中文 utf-8(三个字符表示一个汉字)gbk(两个字符表示一个汉字) 在计数的时候都是当做一个汉字计数。访问字符串中单个字符:字符串.charAt(下标) 【注】从0开始的字符串[下标]【注】字符串是只读,字符串一旦被声明就没有办法被修改,如果非要声明字符串,我们只能讲原字符串效果,重新生成新的字符串。【注】在JS中,字符串既是基本数据类型,又是复合数据类型。字符串找那个的字符遍历也可以进行循

2021-05-01 23:09:18 84

原创 正则表达式

正则表达式1. 正则表达式概念正则表达式,super string。​ 正则表达式(regular expression)是一个描述字符模式的对象。ECMAScript 的 RegExp 类 表示正则表达式,而 String 和 正则表达式都定义了进行强大的【模式匹配】和【文本检索】与【替换】的函数。2.正则表达式的创建方式​ 创建正则表达式和创建字符串类似,创建正则表达式提供了两种方法,一种是采用 new 运算符,另一个是采用字面量方式。var box=new RegExp('box')

2021-05-01 23:08:43 94

原创 运动与游戏开发

运动与游戏开发运动原理如何实现运动方法:运动的物体使用绝对定位通过改变定位物体的属性(left、right、top、bottom)值来使物体移动。例如向右或向左移动可以使用offsetLeft(offsetRight)来控制左右移动。步骤:开始运动前,先清除已有定时器,否则连续点击按钮会使物体运动速度越来越快。开启定时器,计算速度把运动和停止用if/else语句隔开,判断停止条件,执行运动定时器在javascritp中,有两个关于定时器的专用函数,它们是:倒计定时器:tim

2021-05-01 23:06:23 120

原创 数组

数组遍历数组普通for循环for(var i = 0; i < 5; i++){ document.write(arr[i]);}for…in语句用于遍历数组或者对象的属性(快速枚举法)for(var i in arr){ document.write(arr[i]);}数组的方法栈方法**push()**方法可以接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度。而**pop()**方法则从数组末尾移除最后一个元素,减少数组的lengt

2021-05-01 23:05:54 115

原创 事件下

事件下1. 阻止右键菜单document.oncontextmenu = function(){ return false;}自定义右键菜单js部分代码window.onload = function(){ window.oncontextmenu = function(){ return false; } var oDiv = document.getElementById('di

2021-05-01 22:58:35 114

原创 事件驱动函数

事件驱动函数通过id获取页面上对应的标签document.getElementById(“id”);node.innerHTML 标签间的内容表单元素,获取其中内容,通过.value属性双标签元素,获取其中内容,通过innerHTML属性onclickonblur 失去焦点window.onload = function(){​ 写在这里的代码,是整个页面加载完成后再运行的(固定格式)}通过id获取标签的方法进行简化function $(id){​ return document

2021-05-01 22:57:49 120

空空如也

空空如也

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

TA关注的人

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