
javascript
仇益阳
技术无罪
展开
-
判断微信浏览器环境以及ios和安卓环境
function isWeiXin () { if (navigator.userAgent.match(/(MicroMessenger|micromessenger);?/i)) { return true; // 是微信端 } else { return false; }}if (navigator.userAgent.match(/(iPhone|iPod|...原创 2020-04-14 20:52:33 · 934 阅读 · 0 评论 -
JavaScript之数据结构链表
function defaultEquals (a, b) { return a===b}class Node{ constructor(element) { this.element = element this.next=undefined }}class LinkedList { constructor(equalsFn =defaultEquals...原创 2020-04-12 22:39:59 · 226 阅读 · 0 评论 -
JavaScript数据结构之双端队列
class Deque { constructor() { this.list = {} this.count = 0 this.lowestrCount = 0 } //在双端队列前端添加 addFront(el){ if(this.isEmpty()){ this.addBack(el) } else if (this.low...原创 2020-04-12 10:35:58 · 242 阅读 · 0 评论 -
JavaScript数据结构之队列
class Queue{ constructor() { this.count = 0 this.list = {} this.lowestCount=0 } //往队列添加元素 enqueue (element) { this.list[this.count] = element this.count++ } //检测队列是否为空...原创 2020-04-09 23:15:24 · 212 阅读 · 0 评论 -
JavaScript不用数组实现栈的方式
class Stack { constructor() { this.item={} this.count=0 } //栈顶添加 push(item){ this.item[this.count]=item this.count++ } //删除 pop(){ if(this.isEmpty()){ return un...原创 2020-04-08 22:51:45 · 364 阅读 · 0 评论 -
JavaScript 第二十七篇 性能篇
避免全局查找可能优化脚本性能最重要的就是注意全局查找。使用全局变量和函数肯定要比局部的开销更大,因为要涉及作用域链上的查找。将在一个函数中会用到多次的全局对象存储为局部变量总是没错的。 特别是使用链式操作的时候,如果涉及到全局变量,应把全局变量赋予给局部变量避免 with 语句在性能非常重要的地方必须避免使用 with 语句。和函数类似,with 语句会创建自己的作用域,因此会增加其中执行的...原创 2019-11-22 23:24:57 · 21635 阅读 · 0 评论 -
JavaScript 第二十六篇 Web存储机制
Web Storage 最早是在 Web 超文本应用技术工作组(WHAT-WG)的 Web 应用 1.0 规范中描述的。这个规范的最初的工作最终成为了 HTML5 的一部分。Web Storage 的目的是克服由 cookie 带来的一些限制,当数据需要被严格控制在客户端上时,无须持续地将数据发回服务器。Web Storage 的两个主要目标是:提供一种在 cookie 之外存储会话数据的途...原创 2019-11-21 21:48:09 · 21614 阅读 · 0 评论 -
JavaScript 第二十五篇 数据存储之cookie
CookieHTTP Cookie,通常直接叫做 cookie,最初是在客户端用于存储会话信息的。该标准要求服务器对任意 HTTP 请求发送 Set-Cookie HTTP 头作为响应的一部分,其中包含会话信息。例如,这种服务器响应的头可能如下:HTTP/1.1 200 OKContent-type: text/htmlSet-Cookie: name=valueOther-heade...原创 2019-11-20 22:34:36 · 22465 阅读 · 0 评论 -
JavaScript第二十四篇 高级定时器(下)
数组分块所谓数组分块,就是当你发现某个循环占用了大量时间,同时对于上述两个问题,你的回答都是“否”,那么你就可以使用定时器分割这个循环。思路是结合定时器进行递归调用定时器基本示例如下:setTimeout(function(){ //取出下一个条目并处理 var item = array.shift(); process(item); //若还有条目...原创 2019-11-19 20:02:38 · 22689 阅读 · 0 评论 -
JavaScript第二十四篇 高级定时器(上)
使用 **setTimeout()和 setInterval()**创建的定时器可以用于实现有趣且有用的功能。虽然人们对 JavaScript 的定时器存在普遍的误解,认为它们是线程,其实 JavaScript 是运行于单线程的环境中的,而定时器仅仅只是计划代码在未来的某个时间执行。执行时机是不能保证的,因为在页面的生命周期中,不同时间可能有其他代码在控制 JavaScript 进程。在页...原创 2019-11-18 22:37:50 · 22451 阅读 · 0 评论 -
JavaScript第二十三篇 技巧篇之对象篇
任何对象都可以被在同一环境中运行的代码修改。开发人员很可能会意外地修改别人的代码,甚至更糟糕地,用不兼容的功能重写原生对象。ECMAScript 5 致力于解决这个问题,可以让开发人员定义防篡改对象(tamper-proof object)。不可扩展对象(第一级别)所有对象都是可以扩展的。也就是说,任何时候都可以向对象中添加属性和方法。示例:// 定义一个对象var person =...原创 2019-11-17 20:43:43 · 22543 阅读 · 0 评论 -
JavaScript第二十三篇 技巧篇之函数篇(下)
函数篇(下)函数绑定函数绑定要创建一个函数,可以在特定的 this 环境中以指定参数调用另一个函数。为了理解,我们先看一个这样的例子示例:var handler = { message: "Event handled", handleClick: function(event){ alert(this.message); }};var b...原创 2019-11-16 22:34:08 · 22512 阅读 · 0 评论 -
JavaScript第二十三篇 技巧篇之函数篇
函数篇(上)安全的类型检测JavaScript 内置的类型检测机制并非完全可靠。事实上,发生错误否定及错误肯定的情况也不在少数。比如说 typeof操作符吧,由于它有一些无法预知的行为,经常会导致检测数据类型时得到不靠谱的结果。Safari(直至第4版)在对正则表达式应用typeof操作符时会返回"function",因此很难确定某个值到底是不是函数再比如,instanceof 操作符在存在...原创 2019-11-15 21:45:48 · 21556 阅读 · 0 评论 -
Jenkins web自动化部署工具安装
安装jenkins系统centos7wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo然后执行下面的命令rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key然后安装jenkinsyum...原创 2019-11-14 17:44:26 · 385 阅读 · 0 评论 -
JavaScript第二十二章 跨域资源共享
什么叫跨域?跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。广义的跨域:资源跳转: A链接、重定向、表单提交资源嵌入: 、什么是同源策略?同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协...原创 2019-11-13 20:34:58 · 20989 阅读 · 0 评论 -
JavaScript第二十一章 XMLHttpRequest 2级
FormDataFormData 为序列化表单以及创建与表单格式相同的数据(用于通过 XHR 传输)提供了便利。用法如下:var data = new FormData();data.append("name", "Nicholas"); 这个 append()方法接收两个参数:键和值,分别对应表单字段的名字和字段中包含的值。创建了 FormData 的实例后,可以将它直接传给 X...原创 2019-11-12 23:17:02 · 138 阅读 · 0 评论 -
JavaScript第二十章 XMLHttpRequest 1级
Ajax 技术的核心是 XMLHttpRequest 对象(简称 XHR),这是由微软首先引入的一个特性,其他浏览器提供商后来都提供了相同的实现。这种技术就是无须刷新页面即可从服务器取得数据,但不一定是 XML 数据。XMLHttpRequest 对象最早是在IE5中被引入的,在 IE 中可能会遇到三种不同版本的 XHR 对象,即 MSXML2.XMLHttp、MSXML2.XMLH...原创 2019-11-11 23:00:19 · 171 阅读 · 0 评论 -
JavaScript第十九章 JSON
什么是Json:它是一种数据格式,是一种表示结构化数据的格式,不是一种编程语言。语法JSON 的语法可以表示以下三种类型的值。简单值:使用与 JavaScript 相同的语法,可以在 JSON 中表示字符串、数值、布尔值和 null。但 JSON 不支持 JavaScript 中的特殊值 undefined。对象:对象作为一种复杂数据类型,表示的是一组无序的键值对儿。而每个键值...原创 2019-11-10 21:08:09 · 188 阅读 · 0 评论 -
JavaScript第十八章 错误处理与调试
学会重视错误处理失败是成功之母,学会接纳错误try-catch语句(因为浏览器处理不同,可能会发生错误时用)标准化错误处理,捕捉错误信息示例:try{ // 可能会导致错误的代码} catch(error){ // 在错误发生时怎么处理} finally { // 不管怎样都会执行,只要有finally存在,try和catch里面的都会被忽视 } 错误类型...原创 2019-11-08 23:52:31 · 121 阅读 · 0 评论 -
JavaScript第十五章节 使用Canvas绘图(WebGL)
WebGLWebGL 是针对 Canvas 的 3D 上下文。与其他 Web 技术不同,WebGL 并不是 W3C 制定的标准,而是由 Khronos Group 制定的。其官方网站是这样介绍的:“Khronos Group 是一个非盈利的由会员资助的协会,专注于为并行计算以及各种平台和设备上的图形及动态媒体制定无版税的开放标准。” KhronosGroup 也设计了其他图形处理 API...原创 2019-11-06 22:21:32 · 1151 阅读 · 0 评论 -
JavaScript第十五章节 使用Canvas绘图(2D)
基本用法要使用元素,必须先设置其 width 和 height 属性,指定可以绘图的区域大小。出现在开始和结束标签中的内容是后备信息,如果浏览器不支持元素,就会显示这些信息。示例:<canvas id="drawing" width=" 200" height="200">A drawing of something.</canvas> 要在这块画布(ca...原创 2019-11-05 20:32:14 · 416 阅读 · 0 评论 -
JavaScript第十三章节 事件
事件事件流:描述的是从页面中接收事件的顺序事件冒泡:事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点事件捕获:由不太具体的节点应该更早得接收到事件,而最具体的节点应该最后接收到事件DOM事件流:事件捕获阶段,处于目标阶段,事件冒泡阶段事件处理程序Html事件处理程序DOM2级事件处理程序addEventListener(eventName,methon...原创 2019-10-17 22:19:05 · 200 阅读 · 0 评论 -
JavaScript第十一章节 DOM扩展
选择符APIquerySelector()方法querySelector()方法接收一个css选择符,返回鱼该模式匹配的第一个元素,如果没有找到匹配的元素就返回null。通过Document类型调用querySelector()方法,会在整个文档范围内查找匹配通过Element类型调用querySelector()方法,会在整个后代范围内查找匹配querySelectAll()方法与...原创 2019-10-13 22:27:28 · 113 阅读 · 0 评论 -
JavaScript第十章DOM
节点层次文档元素htmlNode类型每个节点都有nodeType,可根据nodeType来判断系欸DNA类型,详见高程248页节点关系,每个节点都有childNodes属性,保存着NodeList类数组对象操作节点:appendChild():在末尾添加节点insertBefore():接收两个参数,第一个为需要插入的节点,第二个为插入节点的位置replaceChild...原创 2019-10-11 23:05:02 · 151 阅读 · 0 评论 -
小程序canvans一键截屏纯前端实现
小程序canvas一键截屏,生成图片并保存,提供源码核心代码如下,大家可以参考一下downImg(list) { var that = this let imglist = [] let n = 0 function up() { wx.downloadFile({ url: list[n], success(res...原创 2019-04-20 08:53:20 · 4420 阅读 · 4 评论 -
javaScript小技巧之自定义格式日期
小小技巧,提高效率原创 2019-04-29 23:34:44 · 684 阅读 · 0 评论 -
css小技巧
文字两端对齐div{ width:500px; border:1px solid red; text-align: justify;}div i{ display:inline-block; /*padding-left: 100%;*/ width:100%;}div:after { content: " "; display: inline-b...原创 2019-05-19 13:07:15 · 305 阅读 · 0 评论 -
Ant Design Pro Vue使用心得
目录结构├── public│ └── logo.png # LOGO| └── index.html # Vue 入口模板├── src│ ├── api # Api ajax 等│ ├── assets # 本地静态资源│ ├── config ...原创 2019-06-22 13:12:21 · 21876 阅读 · 2 评论 -
Ant-design-vue 树形控件tree 新增节点,删除节点,编辑节点的解决方案
Ant-design-vue 树形控件tree 新增节点,删除结点,编辑结点的解决方案最近项目需求如下,想做一个菜单管理,用tree的形式,用过element-ui的都知道怎么处理,但是由于ant-design-vue并未提供操作节点方法,遂自己的解决方案如下<template> <div class="page-header-index-wide"> &l...原创 2019-06-26 12:51:13 · 39828 阅读 · 28 评论 -
webpack之代码分割和动态important
webpack之代码分割和动态important代码分割的意义懒加载的加载模式如何动态使用important原创 2019-07-08 14:33:21 · 343 阅读 · 0 评论 -
JavaScript第一章节
javaScript实现核心是(ECMAScript)ECMAScript就是对实现该标准规定的各个方面内容的语言的描述文档对象模型(DOM)文档对象模型是针对XML但经过扩展用于HTML的应用程序编程接口浏览器对象模型(BOM)BOM只处理浏览器窗口和框架...原创 2019-09-27 20:43:58 · 119 阅读 · 0 评论 -
JavaScript第八章节BOM
Windows对象全局作用域全局作用域中声明的变量,函数和方法都会变成windows的属性和方法窗口关系及框架每个框架都有自己的windows对象可通过windows.frames进行访问frames可用frameset包裹窗口位置screenLeft(screenX):窗口相对于屏幕左边screenTop(screenY):窗口相对于屏幕上边moveT...原创 2019-09-29 21:58:57 · 117 阅读 · 0 评论 -
用XMLHttpRequest模拟EventSource
此文仅抄录于javascript权威指南//在不支持EventSource API的浏览器里进行模拟//需要有一个XMLHttpRequest对象在新数据写到长期存在的HTTP连接中发送readystatechange事件//注意,这个API的实现是不完整的//它不支持readyState属性,close()方法,open和error事件//消息事件也是通过onmessage属性注册的...原创 2019-01-11 17:37:49 · 1984 阅读 · 0 评论