
JavaScript
文章平均质量分 62
JavaScript
南初️
这个作者很懒,什么都没留下…
展开
-
监听模式模拟事件监听
function Handle(){ this.events={}; this.addEventListener=function(type,fn){ //添加订阅 if(!this.events[type]){ this.events[type]=[]; } this.events[type].push(fn); }; ...原创 2021-11-10 16:31:17 · 139 阅读 · 3 评论 -
策略模式实现表单验证
//定义一个策略 var msg={ default:"输入格式不正确!", maxLength:"输入长度太长!", minLength:"输入长度不够!", isEmpty:"输入的值不能为空!", isNumber:"输入的值必须是纯数字!", success:"正确!" } //写验证规则 var ruleList={ isNumber:funct...原创 2021-11-10 16:31:01 · 224 阅读 · 3 评论 -
原型对象、原型链超详细讲解(附图解)
原型对象、原型链超详细讲解(附图解)一、函数的原型对象二、prototype(函数的原型)三、__ proto__(原型链)四、constructor(构造函数)五、prototype继承六、结论1.实例对象的原型链指向当前类的原型对象。2.原型对象的原型链指向Object函数的原型对象3.Object函数的原型对象的原型链指向null,Object的原型链是不存在的。4.所有对象最后都会指向Object函数的原型对象。七、图解过程一、函数的原型对象原型对象中有原型链—指向最高函数的原型对.原创 2021-10-30 17:19:19 · 4761 阅读 · 3 评论 -
js---Ajax访问远程api访问失败的处理方法
Ajax访问远程的api,存在访问失败的问题(跨域问题)一、如何产生跨域1. 协议不同https、httphttp://www.maomao.com:80https://www.maomao.com:802. 端口号不同63342、80|8080http://www.maomao.com:63342http://www.maomao.com:803. 域名不同http://www.xiaohei.com:80http://www.maodou.com:80二、产生跨域原创 2021-10-24 11:47:59 · 735 阅读 · 3 评论 -
js---封装Ajax
//封装Ajax //原生js处理异步编程的解决方案是匿名函数回调 function Ajax(method,url,data,callback){ var http; if(window.XMLHttpRequest){ http=new XMLHttpRequest(); } else{ http=new ActiveXObject("Microsoft.XMLHTT...原创 2021-10-24 11:48:28 · 132 阅读 · 3 评论 -
js---使用Ajax访问本地服务器
//ajax只能请求服务器 //请求本地服务器 //ajax在请求本地服务器的时候不需要跨域 var http=new XMLHttpRequest(); http.open('get','http://localhost:63342/js/Ajax/json/data.json'); http.send(); http.onreadystatechange=function(){ if(http.readyState==1){ ...原创 2021-10-24 11:47:52 · 1483 阅读 · 3 评论 -
js---Ajax
js---Ajax一、Ajax简介1. 什么是 AJAX ?2. AJAX 工作原理3. 使用场景4. 优点二、AJAX---创建 XMLHttpRequest 对象1. XMLHttpRequest 对象2. 创建XMLHttpRequest对象三、AJAX---向服务器发送请求(五步法)1. 创建请求对象2. 建立服务器连接(1)什么是同步、异步?(2)使用GET 还是 POST?3. 发送请求4. 监听请求5. 数据渲染四、请求网页到渲染完成的过程一、Ajax简介AJAX 是一种在无需重新.原创 2021-10-24 11:47:42 · 159 阅读 · 3 评论 -
js---正则表达式
一、正则表达式简介正则表达式是做数据验证格式的。二、正则表达式的验证方式用match进行匹配匹配成功返回匹配集合,不成功返回null使用regexp对象验证test验证成功返回true,失败返回false var str="abc123abc"; var reg=/[0-9]+/; console.log(str.match(reg));//["123", index: 3, input: "abc123abc", groups: undefined] consol原创 2021-10-11 17:24:57 · 153 阅读 · 3 评论 -
js中的call和apply
call和apply是替换前面函数内部的this指针以及传递参数。区别是call传递的参数是序列1,2,3,4apply传递的参数是集合型[1,2,3,4]原创 2021-10-02 14:17:37 · 8047 阅读 · 2 评论 -
js内置对象---数学内置对象
js内置对象---数学内置对象一、圆周率二、向上和向下取整的方法1. 向下取整2. 向上取整三、最大值最小值方法1. 最大值2. 最小值四、取绝对值五、开平方六、幂指数方法七、随机数方法八、正弦函数、余弦函数、正切函数1. 正弦函数2. 余弦函数3. 正切函数一、圆周率console.log(Math.PI);//3.141592653589793二、向上和向下取整的方法1. 向下取整console.log(Math.floor(3.9));//32. 向上取整console.原创 2021-10-09 18:59:43 · 374 阅读 · 3 评论 -
js数组的相关算法题
js数组的相关算法题一、输出1-100之间所有的素数之和二、阶乘算法三、字符串去重方法1:es6写法方法2:数组方法进行去重方法3:使用数组+对象的方法去重四、字符串原位翻转五、查找字符串中元素个数最多的元素,并且输出个数六、数字转化为money的格式七、数组降维八、在一个数组中查找值,返回值对应索引的集合九、寻找两个数组中相同的元素中最小的元素数组其他题型一、输出1-100之间所有的素数之和 var sum=0; for(var i=2;i<=100;i++){ .原创 2021-10-02 14:24:46 · 909 阅读 · 3 评论 -
reduce实现原理
Array.prototype.myReduce=function(callback){ var arr=this; var all=arr[0]; for(var i=1;i<arr.length;i++){ all=callback(all,arr[i]); } return all; } var arr=[1,2,3,4,5]; var result=arr.myRe.原创 2021-09-30 20:09:18 · 371 阅读 · 3 评论 -
js自己实现map映射的原理
Array.prototype.mymap=function(callback){ //this指向的是当前对象st var arr=this; var list=[]; for(var i=0;i<arr.length;i++){ list[i]=callback(arr[i],i,arr); } return list; } var st=[1,2,3,...原创 2021-09-30 20:09:09 · 854 阅读 · 3 评论 -
js创建自定义事件或者自动触发已有事件
js创建自定义事件或者自动触发已有事件一、eventTypeeventType共有5种类型:二、创建自定义事件或者自动触发已有事件一、eventTypeeventType共有5种类型:HTMLEvents:包括 ‘abort’, ‘blur’, ‘change’, ‘error’, ‘focus’, ‘load’, ‘reset’, ‘resize’, ‘scroll’, ‘select’, ‘submit’, ‘unload’.UIEevents :包括 ‘DOMActivate’, .原创 2021-09-22 11:31:08 · 752 阅读 · 2 评论 -
js内置对象---计时器对象
一、计时器对象简介计时器对象分类计时器对象分为一次性计时器,循环计时器,帧计时器二、一次性计时器计时器的参数有string||function delay msms—延迟多少毫秒后执行1. 一次性计时器的写法写法1 window.setTimeout(function(){ console.log("常规代码"); },1000) 写法2 //可以不写前缀window setTimeout(function.原创 2021-09-21 10:34:09 · 504 阅读 · 3 评论 -
bom操作----Navigator对象
bom操作----Navigator对象一、Navigator对象--存在当前设备信息二、appCodeName--返回浏览器的代码名三、appName--返回浏览器的名称四、appVersio--返回浏览器的平台和版本信息五、cookieEnabled--返回指明浏览器中是否启用 cookie 的布尔值六、platform--返回运行浏览器的操作系统平台七、userAgent--返回由客户机发送服务器的user-agent 头部的值系统环境---可以检测当前设备系统------userAgent().原创 2021-09-20 19:37:46 · 276 阅读 · 3 评论 -
bom操作----Screen对象
bom操作----Screen对象一、窗口的文档显示区的宽高二、返回一个窗口的外部宽高,包括所有界面元素(如工具栏/滚动条)三、屏幕的总宽高四、屏幕的尺寸,不包含任务栏五、可见区域宽高六、返回目标设备或缓冲器上的调色板的比特深度七、返回屏幕的颜色分辨率(每像素的位数)window.screen对象在编写时可以不使用 window 这个前缀。一、窗口的文档显示区的宽高console.log(window.innerWidth,window.innerHeight);//3072 1438.原创 2021-09-20 18:55:03 · 329 阅读 · 3 评论 -
checkbox元素的全选和反选
<button id="ckall">全选</button><button id="fck">反选</button><button id="allnck">全不选</button><input type="checkbox" class="item"/>篮球<input type="checkbox" class="item"/>足球<input type="checkbox" class="it原创 2021-09-12 17:38:00 · 732 阅读 · 2 评论 -
后端返给前端的数据格式
一、数据格式简介数据格式分类数据格式:json、xml(树形结构文档,类似html)json数据类型数组型(key:value) 对象型( object)二、单个jsonjson标准格式要求写双引号key可以不写引号 var stu={"name":"张三","age":18,"sex":"男"}; console.log(stu);//Object console.log(stu.name);//张三 console.log(stu.age);//18原创 2021-09-10 11:18:41 · 10802 阅读 · 4 评论 -
浏览器出现“Cannot set property ‘onmouseenter‘ of null”问题的解决办法
目录一、错误如下二、错误原因三、解决办法一、错误如下二、错误原因js文件放在head里面时,如果绑定了onclick或者onmouseover事件,就会出现如上图类似的错误,是因为浏览器的加载你写的html文档的顺序是从上往下,加载完按钮节点才执行的js,所以当浏览器自顶向下解析时,找不到onmouseenter绑定的按钮节点,于是报错。三、解决办法方法一:把js文件放在底部加载方法二:使用window.οnlοad=function(){}包裹js内容。.原创 2021-09-09 10:57:10 · 3787 阅读 · 2 评论 -
dom元素样式操作
这里写目录标题一、元素的样式的获取二、style的设置三、获取dom元素的非行内样式四、window.getComputedStyle() 方法的使用1. getComputedStyle() 用法2. 返回值3. 和 style 的异同4. 兼容性一、元素的样式的获取<style> .btn{ background-color: orangered; }</style><button class="btn list" name="b.原创 2021-07-13 23:38:11 · 602 阅读 · 2 评论 -
为什么typeof null返回的是object?
为什么typeof null返回的是object?一、历史原因二、原理一、历史原因1995年JavaScript语言的第一版,所有值都设计成32位,其中最低的3位用来表述数据类型,object对应的值是000。当时,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),完全没考虑null,只把它当作object的一种特殊值,32位全部为0。 这是typeof null返回object的根本原因。二、原理原理是这样的,不同的对象在底层都表示为二进制,在 JavaScr.原创 2021-07-04 18:51:21 · 3705 阅读 · 2 评论 -
Canvas2D属性和方法
一、Canvas2D模型的属性1.canvas在对象CanvasRenderingContext2D的原型对象上可以添加方法 直接调用使用2.context.canvas----返回当前操作的canvas对象(只读) console.log(context.canvas);3.fillStyle:给canvas中的各种图形填充样式,默认填充样式是黑色#000。语法: context.fillStyle = color; context.fillStyle = .原创 2021-02-21 13:57:46 · 1089 阅读 · 2 评论 -
Canvas API
一、Canvas概述Canvas API(画布)用于在网页实时生成图像,并且可以操作图像的内容。使用前,要先创建一个canvas网页元素,即<canvas></canvas>。所需功能全由js代码实现。二、Canvas常见属性height和width表示的是canvas绘制区域的宽高。注意:不要直接使用style给canvas元素设置宽高(若是使用style设置,那么久表示的是元素的大小)<canvas id="canvas">&.原创 2021-02-20 22:31:02 · 326 阅读 · 2 评论 -
html5缓存
html5缓存storage缓存一、html5缓存的方式二、设置缓存---setItem()三、获取缓存---getItem()或者key()1.getItem()2.key()---通过键值获取缓存四、移除缓存---removeItem()五、全部清除缓存---clear()六、length属性---返回储存数据的个数storage缓存类似cookie缓存没有时间限制一、html5缓存的方式加粗样式二、设置缓存—setItem()两个参数全为String类型<s原创 2021-02-13 22:50:10 · 910 阅读 · 2 评论 -
js中的异常处理
js中的异常处理一、处理异常的语句二、 try/catch/finally 语句的定义以及用法三、捕捉异常的代码一、处理异常的语句常见的处理异常的语句时try/catch/finally 语句。二、 try/catch/finally 语句的定义以及用法try/catch/finally 语句用于处理代码中可能出现的错误信息。错误可能是语法错误,通常是编码错误或错别字。也可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。try语句允许我们定义在执行时进行错误测试的代.原创 2021-02-13 21:56:35 · 1774 阅读 · 2 评论 -
JavaScript 严格模式(use strict)
一、JavaScript 严格模式的概念JavaScript 严格模式(strict mode)即在严格的条件下运行。使用 “use strict” 指令它不是一条语句,是一个字面量表达式。严格模式下不能使用未声明的变量。二、JavaScript 严格模式的作用减少js代码的不规范使用和不合理运行,提高运行速度。三、JavaScript 严格模式的分类四、JavaScript 严格模式的声明严格模式通过在脚本或函数的头部添加 use strict;.原创 2021-02-13 21:52:39 · 1086 阅读 · 4 评论 -
JavaScript中的加密解密
一、Base64Base64,就是选出64个字符作为一个基本字符集(A-Z,a-z,0-9,+,/,再加上作为垫字的"=",实际是65个字符),其它所有符号都转换成这个字符集中的字符。编码规则:第一步,将每三个字节作为一组,一共是24个二进制位。第二步,将这24个二进制位分为四组,每个组有6个二进制位。第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节。第四步,得到扩展后的每个字节的对应符号,这就是Base64的编码值。解码规则:第一步,将每4个字符为一组,查找上表,找到每个字符原创 2021-02-09 11:03:52 · 1513 阅读 · 1 评论 -
JS里面的缓存机制---Cookie缓存
Cookie是用于缓存web页面的用户信息。一、什么是Cookie?1.概念Cookie是一些数据,存储于电脑的文本文件中。当web服务器向浏览器发送web页面时,在连接关闭后,服务端不会记录用户的信息。而Cookie的作用就是记录客户端的用户信息。2.Cookie作用:用来记录web页面的用户信息<1>当用户访问 web 页面时,他的名字可以记录在 cookie 中。<2>在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。(常见的有浏览器二次登录时原创 2021-02-09 11:04:57 · 645 阅读 · 2 评论 -
js里面的设计模式
目录一、工厂模式二、构造函数模式三、原型模式四、构造函数模式+原型模式五、单例模式(单子模式或单体模式)六、观察者模式(观察和发布订阅模式)设计模式的目的:优化性能,利于维护。一、工厂模式使用工厂模式,解决的是多次创建对象的问题,但是没有解决对象识别的问题(返回的都是同一个对象类型)<script> //实例化不同的人 function Factory(name,age,job){ var obj = new Object(); .原创 2021-01-22 08:41:56 · 490 阅读 · 2 评论 -
js里面实现继承的五个方式
所有的对象默认继承的都是Object这个类。要实现继承,首先得需要一个父类。一、原型链继承核心原理:将父类的实例作为子类的原型对象。<script> //动物父类 function Animal(name,sex){ this.name = name||'Animal'; this.sex = sex||'未知'; this.sleep = function(){ console.log(..原创 2021-01-22 00:56:11 · 196 阅读 · 2 评论 -
自定义构造函数以及对象的合并方法
目录一、原型对象上面可以写入原型方法、原型属性二、添加原型对象三、对象的合并方法一、原型对象上面可以写入原型方法、原型属性写入原型属性 Animal.prototype.sex = null; Animal.prototype.age = null; Animal.prototype.name = null;写入原型方法 Animal.prototype.eat = function(){ console.log("吃饭"); }; Ani.原创 2021-01-21 22:29:24 · 248 阅读 · 2 评论 -
new实例化原理
使用函数创建对象一、使用函数创建对象二、new实例化原理三、获取相关属性数组截取自己写一个排序,使用数组来执行函数的原型对象原型对象上面可以写入原型方法、原型属性一、使用函数创建对象直接使用函数写对象,函数里面的this指针指向的是window。es5中没有class类的体现,有function,es6中才出现了class类。向后端靠拢。那么,es5中没有class类,怎么去创建对象?<script> function peope(){ this.na.原创 2021-01-16 14:29:19 · 870 阅读 · 2 评论 -
js数组中常见的几大排序
几大排序一、冒泡排序二、快速排序(递归排序)三、选择排序四、插入排序一、冒泡排序原理:两两比较相邻的元素,如果反序,则交换位置,直到没有反序为止。a、将序列中的相邻元素依次比较,较小的数向下冒(即交换到前面);第一轮比较结束后,序列第一个元素是当前序列的最小值。b、对序列当中剩下的n-1个元素再次执行步骤a,直至完成。共需要n-1轮比较。<script> var arr = [1,9,4,2,5,3,8,6,7]; function bubbleSort(ar.原创 2021-01-02 00:47:06 · 281 阅读 · 2 评论 -
js数组常用的方法
目录一、数组的声明1. 标准式写法2. 白话式写法二、数组的赋值1. 在建立数组的时候直接赋值2. 根据键值进行赋值三、数组的取值四、数组拼接方法---concat()五、数组转化为字符串-----join()六、数组翻转一、数组的声明1. 标准式写法var arr = new Array();new关键字:实例化,也就是创建Array():数组的类对象数组为引用类型,唯一属性为length属性(长度属性)2. 白话式写法var arr = [];二、数组的赋值.原创 2020-12-19 00:19:16 · 7522 阅读 · 3 评论 -
集合、数组的遍历
集合、数组的遍历一、 for循环遍历二、 使用for-in进行遍历三、 使用for-each进行遍历(数组自带方法)四、map遍历五、 累计器---reduce()一、 for循环遍历 for(var i = 0;i<arr3.length;i++){ console.log(arr3[i]); }二、 使用for-in进行遍历 for(var key in arr3){ console.log(arr3[key]); }key指数组里.原创 2020-12-18 23:03:33 · 324 阅读 · 2 评论 -
bom操作---location(地址栏对象)
目录一、获取地址栏基本信息1. 获取主机名称+端口号2. 获取主机名称3. 获取当前地址4. 获取协议+主机名称+端口号5. 获取地址栏后半段6. 获取端口号7. 获取协议二、有关地址栏基本方法1. reload()----重新加载2. 跳转页面----href3. 地址替换----replace()一、获取地址栏基本信息1. 获取主机名称+端口号 console.log(location.host);//主机名称+端口号2. 获取主机名称 console.log(locati.原创 2020-12-18 22:08:05 · 456 阅读 · 3 评论 -
bom操作----history对象
目录一、后退---back()二、前进---forward()三、go()四、pushState()----创建一条历史记录五、replaceState()----修改当前的历史记录六、禁止主界面系统回退七、标签实现前进倒退一、后退—back()移动到上一个访问页面,等同于浏览器的后退键。 history.back();//后退二、前进—forward()移动到下一个访问页面,等同于浏览器的前进键。 history.forward();//前进<butt.原创 2020-12-18 21:33:02 · 444 阅读 · 7 评论 -
bom操作----window对象
bom操作一、window对象—浏览器对象1.常用提示框(1)浏览器弹框-----alert()window.alert("弹框");(2)带确认和取消按钮的一个提示框----confirm()window.confirm("确认是否提交?"); if(window.confirm("确认是否提交?")) { console.log("确认"); } else { console.log("用户拒绝"); }(原创 2020-12-18 16:50:38 · 599 阅读 · 4 评论 -
js中innerHTML和innerText的用法和区别
目录一、innerHTML二、 innerText三、设置元素文本内容直接以字符串的形式创建标签innerHTML和innerText这两个属性,都是获取document对象文本内容。一、innerHTML获取或设置元素的html内容—可以自动解析html标签二、 innerText获取或设置元素的文本----以纯文本的方式直接显示区别如下:<div class="main"> <h3>我是内容</h3>&l.原创 2020-12-11 19:49:00 · 693 阅读 · 1 评论