- 博客(63)
- 收藏
- 关注
原创 【数据结构与算法】JS实现二叉树的非递归遍历
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head></html><script>
2021-03-15 16:23:42
415
原创 【JavaScript】递归实现一个深拷贝
function deepCopy(obj){ // 递归退出条件 if(obj === null || typeof obj !== 'object'){ return obj; } const cloneObj = Array.isArray(obj) ? [] : {}; for(key in obj){ //判断是不是自身属性 if(obj.hasOwnProperty(key)){ if(typeof
2021-02-17 21:52:51
310
原创 【JavaScript】实现bind,apply和call
Function.prototype.myBind = function(ctx, ...agrs1){ const fn = this; function noopFn(){} function innerFn(...args2){ // bind返回的函数可以作为构造函数使用 // 当做构造函数时,绑定的this(即上文ctx)失效; 此时this指向new出来的实例 ctx = th
2021-01-11 14:51:33
184
1
原创 【JavaScript】手写一个promise
const PENDING = 'PENDING';const RESOLVE = 'RESOLVE';const REJECTED = 'REJECTED';function Promise(executor){ const self = this; self.status = PENDING; self.data = undefined; self.callbacks = [] // { onResolved: () => {}, onRejected:
2021-01-06 22:00:07
182
原创 【ts】ts学习笔记
一、函数重载// 函数重载function add(...rest: number[]):number;function add(...rest: string[]):string;function add(...rest: any):any { let first = rest[0]; if(typeof first === 'number') { return rest.reduce((pre, cur) => pre +cur); } if
2020-06-14 17:17:37
203
原创 【JavaScript】js闭包的10种表现形式
1.返回值var fn = function() { var name = function() { var name = 'lzx'; return function() { return name; } }}2.函数赋值, 将内部函数赋值给外部变量var fn2;var fn = functio...
2020-05-05 18:58:54
724
2
原创 【JavaScript】使用js实现3版函数节流
html jsfunction throttle(func, wait) { let prevTime = 0; return () => { args = arguments; const _this = this; let nowTime = new Date().valueOf(); if(nowTi...
2020-05-04 18:34:15
187
转载 【性能优化】浏览器的重绘与重排
**浏览器运行机制**1、构建DOM树(parse):渲染引擎解析HTML文档,首先将标签转换成DOM树中的DOM node(包括js生成的标签)生成内容树(Content Tree/DOM Tree);2、构建渲染树(construct):解析对应的CSS样式文件信息(包括js生成的样式和外部css文件),而这些文件信息以及HTML中可见的指令(如),构建渲染树(Rendering Tr...
2020-04-12 18:13:38
536
原创 【JS】使用js实现一个简单的函数防抖
// 使用节流的case:1.输入框查询2.表单验证3. 按钮提交事件4.scroll滚动事件5.resize 事件/** * @description 节流 * @param fn 传入的回调 * @param wait 间隔多少s执行 * @immediate 是否立即执行还是*/function debounce(fn, wait, immediate) { ...
2020-04-06 23:28:26
1413
原创 如何写好JavaScript
需求: 用js实现红绿灯效果。三个状态用红(stop)、绿(pass)、黄(wait)要求用JavaScript让三个状态轮流切换,每个状态停留2sHTML <ul id="traffic" class="stop" > <li><span></span></li> <li><sp...
2019-08-25 16:47:17
248
原创 【移动端】封装一个简单的tap事件鸭
1. tap事件与click事件移动端click事件缺陷移动端也有click事件,但是在移动端为了区别是点击还是滑动(当用户触碰到屏幕的时候,可能是点击,也可能是活动),因此click事件有300ms的延迟。这个延迟在chrome浏览器模拟器中体现不到300ms的效果,只有在真机上才有。响应太慢,影响用户体验tap事件tap事件不是移动端原生事件,而是通过touch相关事件衍生(封...
2019-06-24 23:16:35
541
原创 【移动端】学习移动端的滑动手势事件
1.判断滑动的手势条件触发touchmove事件移动的超过一定的距离,如10px, 像滑动了1px,2px这类的距离太小,不能视为滑动<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content=...
2019-06-24 21:54:47
2522
原创 【移动端】使用js和css3的translate、transition实现的简单轮播图
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-U...
2019-06-24 21:11:27
2436
原创 【CSS】CSS之层叠性,继承性,优先级
层叠性样式发生冲突的时候,总是执行后边的样式,和调用顺序无关。继承性文字的所有属性都可以被继承-特殊:h1-h6 文字大小不能被继承a标签文字颜色不能被继承优先级默认样式<标签选择器<类选择器<id选择器<行内样式<!important0 1 10 100 ...
2019-06-21 21:22:20
258
原创 【NPM】npm i webpack -g或npm i create-react-app -g之后提示command not found解决方案
鄙人之前在安装webpack,yarn,react-react-app,vue-init时,明明是按着官方文档进行安装的,而且提示安装成功了npm i webpack webpack-cli -gnpm i create-react-app -gnpm i yarn -g不管是 -g 还是–save都不管用,但是老是出现 xxx command not found如下图所示什么鬼?提...
2019-06-10 00:58:54
1973
原创 【nodeJs】使用NodeJs模拟一个session
var express = require('express');var app = express();var session = require('express-session');app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: true}));app...
2019-03-24 17:57:12
369
原创 【NodeJs】用NodeJs模拟一个cookie
var express = require('express');var cookieParser = require('cookie-parser');var app = express();// 使用cookie-parser中间件app.get('/', function(req, res) { res.send('猜你喜欢' + req.cookies.mudidi)...
2019-03-24 17:50:57
758
原创 【设计模式】实现一个简单的js发布-订阅者模式
一 概念发布—订阅模式又叫观察者模式,它定义了对象间的一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当一个对象发生改变时,所有依赖于它的对象都将得到通知。二 现实中的发布订阅者模式1.比如小红最近在淘宝网上看上一双鞋子,但是呢 联系到卖家后,才发现这双鞋卖光了,但是小红对这双鞋又非常喜欢,所以呢联系卖家,问卖家什么时候有货,卖家告诉她,要等一个星期后才有货,卖家告诉小红,要是你喜...
2019-03-10 20:41:35
4220
原创 mac 刷新浏览器和强制刷新浏览器
command + r 普通刷新(类似于windows的F5)command + shift + r 强制刷新(类似于windows的Ctrl+F5)
2018-12-10 16:48:18
4329
原创 【前端面试】对JavaScript中this的理解总结
setTimeout、setInterval中的this,严格模式和非严格模式下的this,箭头函数中的this,函数独立调用中的this1.setTimeout、setInterval中的thisvar obj ={ fn:function(){ console.log(this); }}function fn2(){ console.log(t...
2018-11-29 20:24:35
1435
原创 【前端面试】去哪儿2019校招(西安站)读代码题
var n = 1;var obj = { fn : function(){ var n = 99; console.log( n + this.n ); }}obj.fn()obj.fn.call(obj);obj.fn.call(this);obj.fn.call(window);obj.fn.call(null);问这段代码的...
2018-11-28 17:31:51
314
1
原创 【github】github创建自己的分支并上传代码到master
1. 创建一个空的文件夹并进入使用终端进入到这个文件夹2.git clone 远程仓库链接3.创建分支: git branch 分支名字4.切换到这个分支: git checkout 分支名字5.把想要上传的代码文件放到这个文件里6. 把这个文件提交到暂存区 git add .7. git status (查看文件状态,非必须,任何时候都可以通过这个命令查看)8...
2018-11-28 16:56:39
5907
原创 【react】react实现类似vue的双向数据绑定
import React from 'react'import ReactDOM from 'react-dom'class Comment extends React.Component { constructor() { super() this.state = { msg:'hhhhello world~~~~' ...
2018-11-08 19:59:45
688
原创 【JavaScript】学习笔记之es6中super( )
为什么一定要在constructor中调用super如果一个子类通过extends关键字继承了父类,那么在子类的constructor构造函数中,必须优先调用一下super(),这是一种约定俗成的做法。super是一个函数,指向父类的构造函数,也可以理解为,子类中的super其实就是父类中 constructor 构造函数的一个引用...
2018-11-07 20:56:41
363
转载 二叉树输入前序遍历,中序遍历重建二叉树并返回
function reConstructBinaryTree(pre, vin) { if(pre.length===0||!pre){ return; } var root = { val: pre[0] }; ...
2018-10-07 17:28:35
226
原创 用promise封装一个简单的ajax啊
function getJSON(url) { return new Promise(function(resolve, reject) { var XHR = new XMLHttpRequest(); XHR.open('GET', url, true); ...
2018-09-27 00:20:37
952
原创 JavaScript实现超大整数相加
function add(a, b) { if (a.length &lt; b.length) { a = '0' + a; } if (b.length &lt; a.length) { n = '0' + b; } // 标志位 满十进一 va...
2018-09-26 20:41:59
1737
转载 HTTP缓存
【强缓存】 在浏览器第一次发起请求时,本地无缓存,向web服务器发送请求,服务器起端响应请求,浏览器端缓存。过程如下:在第一次请求时,服务器会将页面最后修改时间通过Last-Modified标识由服务器发送给客户端,客户端记录修改时间;服务器还会生成一个Etag,并发送给客户端。浏览器后续再次进行请求时: 浏览器缓存主要分为强强缓存(也称本地缓存)和协商缓存(也称弱缓存)。根据上图,浏...
2018-09-07 15:00:22
423
原创 JavaScript实现二叉搜索树、前序遍历、中序遍历、后续遍历
<script type="text/javascript"> function BinaryTree(){ //建立二叉树 var Node=function(key){ this.key=key; this.left=null; this.right=null; ...
2018-09-04 17:32:28
437
原创 js伪数组转数组、js判断是不是数组
伪数组:具有length属性; 按索引方式存储数据;不具有数组的push()、pop()等方法; 伪数组无法直接调用数组方法或期望length属性有什么特殊的行为,不具有数组的push()、pop()等方法,但仍可以对真正数组遍历方法来遍历它们。常见的伪数组:function内的arguments对象,还有像调用getElementsByTagName, getElementsByC...
2018-08-22 15:31:14
1143
转载 【转】HTTP 和 HTTPS 的区别和各自的优缺点
一,HTTP 的缺点 HTTP 主要有这些不足,例举如下: 1)通信使用明文(不加密),内容可能会被窃听 2)不验证通信方的身份,因此有可能遭遇伪装 3)无法证明报文的完整性,所以有可能已遭篡改 这些问题不仅在 HTTP 上出现,其他未加密的协议中也会存在这类问题。除此之外,HTTP 本身还有很多缺点。而且,还有像某些特定的 Web服务器和特定Web浏览器在实际应用中存在的不足(...
2018-08-21 18:08:42
589
原创 js的加载顺序
1.js 放在 <head>标签中会立即执行,阻塞后续资源的下载与执行。因为js有可能会操作DOM,如果不阻塞后续的资源下载,DOM的操作顺序不可控。如果外部脚本加载时间很长,就会造成网页长时间失去响应,浏览器就会呈现“假死”状态。这被称为“阻塞效应”。html 需要等<head>中所有的js和css加载完后才开始绘制。因此要把 js 文件放在 <body&g...
2018-08-20 20:31:16
4506
原创 【数据结构】JavaScript实现单链表、单链表反转
链表链接也是一种存储数据的工具,不同于数组,链表中的元素并不是连续存储的。因此不能通过下标去访问。 链表分为单(向)链表,双向链表,循环链表等。.今天来实现一下单链表。 单链表中的每个元素包括两个两个域,一个是保存元素本身的域,另一个是指向一下一个节点的指针域 function LinkedList(){ var Node = function( ele ){ ...
2018-08-14 16:16:24
2783
原创 前端面试题(四):cookie, session 和 localstorage 的区别
1.cookie 和 session 的联系session(会话)是跟踪web程序中常用的技术,用来跟踪用户的整个回话过程。它可以弥补http协议无状态的不足。常用的会话跟踪技术是 cookie 和 session。 cookie通过在客户端的记录信息,确定用户身份,session通过在服务器端记录信息确认用户身份。 只要cookie能做到的,session也能做到。 比如,如果没有 co...
2018-08-09 18:24:47
13287
6
转载 前端面试题(三):css 的 @import 和 link 的区别(转)
差别1 :适用范围不同 @import可以在网页页面中使用,也可以在css文件中使用,用来将多个css文件引入到一个css文件中;而link只能将css文件引入到网页页面中。 差别2: 功能范围不同 link属于XHTML标签,而@import是CSS提供的一种方式,link标签除了可以加载CSS外,还可以定义RSS,定义rel连接属性等,@import就只能加载CSS。...
2018-08-09 18:07:03
354
原创 浅谈对vue生命周期函数的理解
1.什么是vue生命周期?有什么作用?每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做 生命周期钩子 的函数,这给了用户在不同阶段添加自己的代码的机会。(ps:生命周期钩子就是生命周期函数)例如,如果要通过某些插件操作DOM节点,如想在页面渲染完后弹出广告窗, 那我...
2018-08-09 17:43:18
2620
原创 【微信小程序】微信小程序入门心得之hello 小程序
1.首先,去微信公众平台(https://mp.weixin.qq.com)注册一个小程序账号2.下载 微信web开发者工具,傻瓜式安装,一路next3.扫码登录 4.新建一个小程序,可以选择一个空目录作为项目目录,微信web开发工具 会自动创建一个类似脚手架的文件,就可以直接开发了。 顺便去注册一个AppID,如果没有的话,可以勾选一个测试账号,如果没有 AppID部...
2018-08-08 20:22:11
307
原创 js实现快速排序,冒泡排序,选择排序,直接插入排序、希尔排序
1.思想:快速排序应该是最常用的排序算法了。它的时间复杂度比冒泡排序,直接插入排序等低,且它的性能通常比其他的排序算法要好。和归并排序一样,快排也使用了分而治之的思想。将原始数组分为小数组1)首先,选取数组中间元素作为基准点2)创建两个新数组left和right,遍历原始数组,把比中间元素小的元素放在left数组, 把比中间元素大的元素放在right数组3)left数组...
2018-08-08 20:04:57
366
原创 【数据结构】JavaScript实现堆栈和队列
栈 : 又名堆栈,是一种遵循先进后出(LIFO)原则的线性表。只能在一端进行插入和删除操作。这一端被称为栈顶,相对地,把另一端叫做栈底。 向一个栈插入新元素称为压栈,进栈;从一个栈删除元素叫做出栈,弹栈。 比如典型的例子:弹夹创建栈,用一个js构造函数来表示栈 function Stack(){ var items = [] // 判断是不是...
2018-08-06 15:55:24
230
原创 【artTemplate】artTemplate模板引擎入门(二):原生语法
引入文件 &lt;script src="./template-native.js"&gt;&lt;/script&gt;一.遍历数组html &lt;div id="box"&gt;&lt;/div&gt;配置模板 &lt;scr
2018-07-08 23:48:59
893
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人