自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

leondong_56828的博客

总结,回顾,反思,进步,坚持!

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

原创 this全面解析(this的前世今生)

一、关于thisthis 关键字是 JavaScript 中最复杂的机制之一。它是一个很特别的关键字,被自动定义在所有函数的作用域中。1.1、为什么要使用thisTalk is cheap,show me the code.先来看下比较两段代码你就明白了:function identify() { return this.name.toUpperCase();}function speak() { var greeting = "Hello, I'm " + identify.call( t

2021-01-05 23:10:54 2124 5

原创 正则表达式知识点总结(后续遇到另行补充)

一、\1,\2的含义单独斜杠的 \1 , \2 表示反向引用反向引用提供查找文本中两个相同的相邻单词的匹配项的能力。实例:/\b([a-z]+) \1\b/gi 捕获的表达式,正如 [a-z]+ 指定的,包括一个或多个字母。正则表达式的第二部分是对以前捕获的子匹配项的引用,即,单词的第二个匹配项正好由括号表达式匹配。\1 指定第一个子匹配项。字边界元字符确保只检测整个单词。否则,诸如“is issued”或“this is”之类的词组将不能正确地被此表达式识别。正则表达式后面的全局标记 (g) 指

2020-09-17 21:02:16 220

原创 改变this指向的三种方法,call()、apply()、bind()

改变this指向的三种方法,call()、apply()、bind()及各自的用法和应用场景<script> //1 call()方法 const obj={ name:'张三', age:18 } function fn(a,b){ console.log("call方法de this指向",this);//Object console.log(a+b);//9 } fn.call(obj,3,6)//调用函数并改变th

2020-09-16 19:50:34 224

原创 this指向问题当中的疑难点

难点:this指向问题在这里插入图片描述<script> const obj = { name: '张三' } function fn() { console.log("第一个",this);//Object return () => { console.log("第二个",this)//Object } } fn.cal

2020-09-15 20:15:31 219

原创 闭包中的this(难点)

this对象是在运行的时候基于函数的执行环境绑定(调用位置)的:在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象。不过,匿名函数的执行环境具有全局性,因此其this对象通常指向window。但有时候由于 编写闭包的方式不同,这一点可能不会那么明显。var name = "The Window";var obj = { name : "My Obj", // 方法 getNameFunc : function(){ return

2021-01-16 17:00:36 1458 2

原创 试题与解析---JavaScript(三)

1.判断对象myObj是否存在的写法,下面说法错误的是( )如何判断JavaScript对象是否存在?myobj是一个对象,只是存在与不存在的问题。A,B中,声明,未赋值。2.以下哪些事件支持冒泡?通过event.bubbles属性可以判断该事件是否可以冒泡.冒泡事件H5 还定义了一些新事件:media相关事件,都不冒泡drag相关事件 dragstart 、 drag 、 dragenter 、 dragexit 、 dragleave 、 dragover 、 drop 、

2021-01-14 17:47:01 996 1

原创 试题与解析---JavaScript(二)

1.以下对call() 和 apply() 说法哪些是正确的 ()D中,apply可以将一个数组转换为一个参数列表([p1,p2,p3]转换为p1,p2,p3)var arr=[1,2,3,4]console.log (Math.max.apply(null,arr))//4Math.max()只能传数字,可以使用apply将数组转为一个一个参数传入.因为Math.max 参数里面只支持Math.max(param1,param2,param3…),所以可以根据刚才apply的这一特点来解决

2021-01-13 15:43:58 2046

原创 将时间戳转化为指定日期格式yyyy-MM-dd hh:mm:ss

封装了一个函数transformTime,传入对应的时间戳就可以得到指定格式的时间了。transformTime(timestamp) { let date = new Date(timestamp); const Y = date.getFullYear() + "-"; const M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) + "-"

2021-01-11 23:11:24 824

原创 Vue项目中将表格数据导出为excel文件

1.安装XLSXnpm安装npm install xlsx --save2.封装工具在项目的utils文件夹下面新建一个xlsx.js文件,用来存放这个工具函数。// 下载excel功能import XLSX from 'xlsx'/** * @param dataList 表格数据内容 array * @param fileName 文件标题。必须以 .xlsx结尾 */export const downloadXlsx = (dataList, fileName) =>

2021-01-11 20:13:40 1298 10

原创 数据结构---排序算法一网打尽(注重基本思想)

定义:在排序问题中,我们通常将数据元素称为记录。所以,可以将排序看成是线性表的一种操作。 排序的依据是关键字之间的大小关系。准备基础排序用到的结构与函数顺序表结构#define MAXSIZE 10 /*用于要排序数组个数最大值,可根据需要修改*/typedef struct{ int r[MAXSIZE+1]; /*用于存储要排序数组,r[0]用作哨兵或临时变量*/ int length; /*用于记录顺序表的长度*/}SqList;排序最最常用到的操

2021-01-10 22:20:49 587

原创 试题与解析-JavaScript(一)

1.JavaScript的全局函数? 全局对象/函数坑:setTimeout是window的一个方法。补充:2.下列代码存在几个变量没有被回收?( )var i = 1;var i = 2;var add = function() { var i = 0; return function() { i++; console.log(i); }}();add();代码回收规则如下:全局变量不会被回收。局

2021-01-09 14:55:28 701

原创 原型的邂逅(难点)

五、原型在“类”模式介绍的所有模拟类复制行为的方法,如各种混入,都没有使用 [[Prototype]] 链机制。5.1 [[Prototype]]JavaScript 中的对象有一个特殊的 [[Prototype]] 内置属性,其实就是对于其他对象的引用。几乎所有的对象在创建时 [[Prototype]] 属性都会被赋予一个非空的值。注意:对象的 [[Prototype]] 链接可以为空,虽然很少见。var myObject = { a:2};myObject.a; // 2当你试图引用

2021-01-08 22:56:28 263 1

原创 教你如何识别和实现深拷贝与浅拷贝

秒懂深浅拷贝浅拷贝只是拷贝一层, 更深层次对象级别的只拷贝引用.【情形一】【情形二】【情形三】深拷贝拷贝多层, 每一级别的数据都会拷贝。深拷贝的实现(递归的方式)浅拷贝只是拷贝一层, 更深层次对象级别的只拷贝引用.【情形一】 var obj = { id: 1, name: 'andy', msg: { age: 18 } }; va

2021-01-08 15:38:45 2824 7

原创 JavaScript中的对象和“类”模式

一、对象3.1 语法对象可以通过两种形式定义:声明(文字)形式和构造形式。对象的文字语法大概是这样:(使用最多)var myObj = { key: value // ...};构造形式大概是这样:var myObj = new Object();myObj.key = value;构造形式和文字形式生成的对象是一样的。唯一的区别是,在文字声明中你可以添加多个键 / 值对,但是在构造形式中你必须逐个添加属性。3.2 类型对象是 JavaScript 的基础。在 JavaScri

2021-01-07 22:27:31 541 1

原创 几种特殊的二叉树(常用)

目录一、二叉排序树二、平衡二叉树三、B+树四、红黑树关于B+树和红黑树这两部分内容来源于????B+树和????红黑树。 作者:程序员小灰。也可以上????维基百科查看。一、二叉排序树二叉排序树,又称二叉查找树、二叉搜索树、B树。二叉排序树是具有下列性质的二叉树:若左子树不空,则左子树上所有结点的值均小于它的根结点的值;若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;左、右子树也分别为二叉排序树。也就是说,二叉排序树中,左子树都比节点小,右子树都比节点大,递归定义

2021-01-06 21:51:40 1576 3

原创 数据结构---图

四、图的存储结构从图的逻辑结构来看,图上的任何一个顶点都可被看成是第一个顶点,任一顶点的邻接点之间也不存在次序关系。“顶点的位置”或“邻接点的位置”只是一个相对的概念。如下四张图表示的是同一张图:也正由于图的结构比较复杂,任意两个顶点之间都可能存在联系,因此无法以数据元素在内存中的物理位置来表示元素之间的关系,也就是说,图不可能用简单的顺序存储结构来表示。而多重链表的方式,即以一个数据域和多个指针域组成的结点表示图中的一个顶点,尽管可以实现图结构,但其实在树中,我们也已经讨论过,这是有问题的。对于图

2021-01-06 16:34:06 409

原创 作用域和闭包

一、作用域是什么1.1、编译原理通常将JavaScript归类为“动态”或“解释执行”语言,但事实上它是一门编译语言。但是与传统的编译语言不同,它不是提前编译的,编译结果也不能在分布式系统中进行移植。程序的一段源代码在执行之前会经历三个步骤,统称为“编译”。分词/词法分析这个过程会将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代码块被称为词法单元(token)。例如,考虑程序 var a = 2;。这段程序通常会被分解成为下面这些词法单元:var、a、=、2 、;。空格是否会被

2021-01-03 23:39:10 633 1

原创 数据结构---树

一、定义:(递归的方法)树(Tree)是n(n≥0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T、T2、……、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。两点注意:1.n>0时,根节点是唯一的;2.m>0时,子树的个数没有限制,但彼此之间互不相交1、结构特点:一对多2、结点的度:结点拥有的子树个数称为结点的度。树的

2021-01-02 23:32:34 329

原创 剑指offer算法题-JZ66_机器人的运动范围

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?解答:(见代码注释)function movingCount(threshold, rows, cols){ // write code her

2020-10-03 23:18:10 185

原创 剑指offer算法题-JZ29_最小的K个数

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。解答:function GetLeastNumbers_Solution(input, k){ // write code here var arr=[] if(input.length<k||input.length<1){ return [] } for(var i=0;i<input.

2020-10-02 23:09:06 130

原创 剑指offer算法题-JZ10_矩形覆盖

题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:解答(找规律:斐波那契数列)function rectCover(number){ // write code here var s=[] s[0]=1 s[1]=2 if(number==0){ return 0 } if(number==1){

2020-10-02 23:00:56 136

原创 剑指offer算法题-JZ8_跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。解答:找规律(斐波那契数列)function jumpFloor(number){ // write code here var s=[] //number为1的情况:1 s[0]=1 //number为2的情况1+1或者2 s[1]=2 //number为3的情况:1+1+1或1+2或2+1。。。。。。 for

2020-10-01 23:50:57 104

原创 剑指offer算法题-JZ46_孩子们的游戏(圆圈中最后剩下的数)

题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!_)。请你试着想下,哪个小朋友会得

2020-09-30 23:14:34 128

原创 剑指offer算法题-JZ41_和为S的连续正数序列

题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序解答(带注释)function FindCont

2020-09-29 23:02:40 155

原创 Nodejs服务器端+Express-第三天(更新中)

7.Expressexpress是一种Node开发框架。express,意为“快速的”,顾名思义,express可以加快Node的开发速度。原生的http在某些方面表现不足以应对我们的开发需求,所以就需要使用框架来加快我们的开发效率,框架的目的就是提高效率,让我们的代码高度统一。在node中有很多web开发框架。这一章节我们学习express。Fast, unopinionated, minimalist web framework for Node.js$ npm install expres

2020-09-24 23:37:03 154 2

原创 Nodejs服务器端-第二天(更完)

3.Node中的模块系统3.1node中的JavaScript使用Node编写应用程序主要就是在使用:EcmaScript语言和浏览器一样,在Node中没有Bom和Dom核心模块node为JavaScript提供了很多服务器级别的API,这些API绝大多数都被包装到了一个具名的核心模块中了,例如:文件操作的fshttp服务操作的httpurl路径操作模块path路径处理模块os操作系统信息所有核心模块在使用的时候都必须手动的先使用 require 方法来加载,然

2020-09-23 23:27:55 256

原创 Nodejs服务器端-第一天(更新中)

1.Node介绍1.1为什么要学习Node.js企业需求:具有服务端开发经验更改front-endback-end全栈开发工程师基本的网站开发能力服务端前端运维部署1.2Node.js是什么Node.js是JavaScript 运行时通俗易懂的讲,Node.js是JavaScript的运行平台Node.js既不是语言,也不是框架,它是一个平台浏览器中的JavaScriptEcmaScript基本语法ifvarfunctionObjectArray

2020-09-21 23:25:12 177

原创 数据类型分析和判断

JavaScript中有6种数据类型:数字(number)、字符串(string)、布尔值(boolean)、undefined、null、对象(Object)。其中对象类型包括:数组(Array)、函数(Function)、还有两个特殊的对象:正则(RegExp)和日期(Date)。

2020-09-18 12:24:38 416

原创 数据类型转换

一、转换为字符串 toString() 和 String() 使用方式不一样。 三种转换方式,我们更喜欢用第三种加号拼接字符串转换方式, 这一种方式也称之为隐式转换。二、 转换为数字型(重点) 注意 parseInt 和 parseFloat 单词的大小写,这2个是重点 隐式转换是我们在进行算数运算的时候,JS 自动转换了数据类型三、转换为布尔型 代表空、否定的值会被转换为 false ,如 ‘’、0、NaN、null、undefined 其余值都会被转换为 true&l

2020-09-18 10:27:23 230

原创 简单数据类型之undefined和null

Undefined和 Null情形一:一个声明后没有被赋值的变量会有一个默认值undefined ( 如果进行相连或者相加时,注意结果)情形二:一个声明变量给 null 值,里面存的值为空(学习对象时,我们继续研究null)<script> //undefined var variable; console.log(variable); // undefined console.log('你好' + variable); // 你好u

2020-09-18 10:15:08 172

原创 ES6的内置对象扩展

<script> //array的find方法,,,用于找出第一个符合条件的数组成员,如果没有找到返回undefined let ary = [{ id: 1, name: '张三' }, { id: 2, name: '李四' }]; let target = ary.find((item, index) => item.id == 2); console.log(target,typeof

2020-09-16 20:05:44 80

原创 ES5新增方法

<script> let arr=[1,2,3,4,5,6] var newarr= arr.filter((value,index,arr)=>value<=3)//index>=2亦可 console.log(newarr);//Array(3) console.log(arr.some((value,index,arr)=>value==6));//true const obj={ name:'张三',

2020-09-16 20:04:03 104

原创 解构现象

<script> //剩余参数和解构配合使用let students = ['wangwu', 'zhangsan', 'lisi']; let [s1, ...s2] = students; console.log(s1); // 'wangwu' console.log(s2); // ['zhangsan', 'lisi'] //如果解构不成功,变量的值为undefined。let [foo] = [];console.log("三",foo);//und

2020-09-16 20:03:03 117

原创 变量,函数提升问题

提升(Hoisting)是 JavaScript 默认将当前作用域提升到前面去的的行为。提升(Hoisting)应用在变量的声明与函数的声明。<script> //console.log(x(6,6));//x is not a function函数表达式(匿名函数)定义不能提升 var x = function (a, b) { return a * b }; console.log(x(6, 6));//36 // --------------------

2020-09-15 20:21:43 104

原创 var函数级作用域

var函数级作用域<script> if (true) { let a = 10; } console.log(a) // undefined a is not defined//注意:使用let,const关键字声明的变量才具有块级作用域if (true) { var a = 10; } console.log(a)//10 function fn(){ var i=6; return } console.log(i);/

2020-09-15 20:00:34 536

空空如也

空空如也

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

TA关注的人

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