
js原理
js原理
weixin_42291794
这个作者很懒,什么都没留下…
展开
-
面试知识点总结 - js Canvas
1. canvas介绍canvas元素:可以通过width、height设定一个区域,然后通过js动态在该区域中绘制图形;如果浏览器不支持canvas,则会显示canvas标签中的内容canvas元素有2D绘图上下文和3D绘图上下文(WebGL)canvas元素的原点在左上角,坐标为(0,0)2. canvas元素的方法getContext(‘2d’):获取2D绘图上下文,可以通过调用该对象的方法属性画各种图形toDataURL(‘image/png’):导出在canvas元素上绘制的图原创 2020-09-17 19:20:53 · 841 阅读 · 0 评论 -
面试知识点总结 - js 懒加载
场景:一个页面中很多图片,但是首屏只出现几张,这时如果一次性把图片都加载出来会影响性能。这时可以使用懒加载,页面滚动到可视区在加载。优化首屏加载。实现:img标签src属性为空,给一个data-xx属性,里面存放图片真实地址,当页面滚动直至此图片出现在可视区域时,用js取到该图片的data-xx的值赋给src。优点:页面加载速度快,减轻服务器压力、节约流量,用户体验好。...原创 2020-09-09 12:56:26 · 130 阅读 · 0 评论 -
面试知识点总结 - js 模块化
1. Es6let fn1 = ()=>{}export{ fn1, fn2}import {fn1,fn2} from './detail.js';内容是对象,分隔符是逗号export default{ name: "我是index.js", fn2: ()=>{ }}import index from "./index.js";2. commonJs(浏览器,服务器)暴露exports 对象,默认是{}exports.xxx原创 2020-09-09 12:51:38 · 594 阅读 · 0 评论 -
面试知识点总结 - js Video和audio
视频及音频格式(容器格式)Mpeg-4: .mp4 mpeg-3: .mp3Flash: .flv aac: .aac Ogg: .ogv ogg: .oggWebm: .webmAvi:音视频交错视频编解码器H.264(avc):mp4 ,vp8:所有 ,Theora:ogg音频编解码器aac :aac,mpeg-3:mp3 ,Vorbis:ogg...原创 2020-09-09 12:36:42 · 215 阅读 · 0 评论 -
面试知识点总结 - js 原型
构造函数+原型链一般情况下,属性在对象本身上,方法在原型中prototype(显示原型)每个函数都有一个prototype,为一个空对象{},称为原型对象({}无自己 写的属性).原型对象中有constructor,__proto__两个属性原型对象中的__proto__存的地址值等于Object.prototype存的地址值,地址值指向同一个对象所以相等原型对象中的__proto__默认指向Object的实例对象Object.prototyp(Object构造函数除外,因为它.原创 2020-09-09 12:35:19 · 113 阅读 · 0 评论 -
面试知识点总结 - js 跨域消息传输
跨域URL:https://editor.youkuaiyun.com:8000/md/?not_checkout=1协议不同域名不同端口不同目录不同参数不同以上任意一个不同都是跨域跨文档消息传输(XDM即cross-document messaging)postMessage(消息,指定消息接收方的域名):发送消息第一个参数消息为字符串,不是字符串时可以调用JSON.stringify()和JSON.parse()window的message事件,会在接收到消息时触发m原创 2020-09-08 09:24:24 · 305 阅读 · 0 评论 -
面试知识点总结 - js 表单
1. 表单中的标签(即表单字段)<input>type属性可以为text、radio、checkbox、submit、reset、还有h5新增的(email、url、number、range、time、datetime、date、month、week)<textarea><select>和<option><button>type属性可以为submit、reset、menu<form>2. 表单中的原创 2020-09-04 09:47:40 · 213 阅读 · 0 评论 -
面试知识点总结 - js RegExp
1. 正则表达式定义字面量形式let reg = /pattern/flagspattern(模式):正则表达式匹配模式,可以包含字符类、限定符、分组、查找、引用flags(标志):全局(g):在所有字符串中查找与模式匹配的项,不是找到第一个就匹配项就结束不区分大小写(i):匹配时不区分大小写多行(m):到一行结尾会继续查找下一行RegExp构造函数形式let reg = new RegExp(pattern,flags)两个参数均为字符串,使用元字符都要原创 2020-09-02 16:57:26 · 193 阅读 · 0 评论 -
面试知识点总结 - js 缓存
数据存储Storage类型概念:提供最大的存储空间(因浏览器而异)来存储名值对,每个域都有固定大小的存储空间用于保存自己的数据Storage实例的方法:clear():删除所有值getItem(name):获取指定名字对应的值setItem(name,value):给指定名字设置对应的指定值removeItem(name):删除指定名字的名值对key(index):获取指定位置的值length:名值对的个数除了以上方法,还可以用点或者方括号[]语法访问storage事原创 2020-08-31 10:01:05 · 126 阅读 · 0 评论 -
面试知识点总结 - js JSON
概念JSON(JavaScript Object Notation):JavaScript对象表示法,是一种数据格式语法简单值:可以表示的包括String、Number、Boolean、Null,语法和js相同;不支持Undefined对象:一组无序的键值对;每个键值对中的值可以为简单值和复杂数据类型的值数组:一组有序的值的列表;数组的值可以为任意类型(简单值、对象、数组),可以统统数组的索引来访问其中的值注意事项不能表示undefined字符串必须用双引号属性名必须加原创 2020-08-28 09:04:00 · 207 阅读 · 0 评论 -
面试知识点总结 - js 拖放
被拖放元素任何元素都可以作为拖放元素除了图片、链接、文本(被选中的情况下)可以被拖动,其他元素默认是不能被拖放的,可以在元素标签中设置draggable=‘true’,可以让其他元素可以拖放被拖放元素上的事件:dragstart:按下鼠标键并开始移动鼠标时触发drag:元素被拖动期间持续触发dragend:拖动停止时触发(无论是把元素放到有效还是无效的放置目标上)拖动期间浏览器默认不会改变拖动元素的外观,会为该拖动元素创建一个半透明的副本,该副本跟随光标移动作为放置目标的原创 2020-08-27 17:42:47 · 192 阅读 · 0 评论 -
面试知识点总结 - js 事件
概念事件流:描述从页面中接收事件的顺序事件流的三个阶段:捕获、处于目标对象、冒泡事件:用户或浏览器自身执行的某种动作事件处理函数:响应某个事件的函数,以on开头事件名:click事件处理函数名:onclick定义事件处理程序(即事件的响应函数):在html中定义js中定义-DOM0:ele.οnclick=fnjs中定义-DOM2:ele.addEventListener(‘click’,fn,{})事件对象(event):所有与事件有关的,从浏览器传导事件处理程序函数原创 2020-08-27 16:49:00 · 297 阅读 · 0 评论 -
面试知识点总结 - js DOM
节点、标签、元素、Node类型nodeNamenodeValuenodeTypechildNodeparentNodefirstChildlastChildnextSiblingpreviousSiblingownerDocumentchildrenappendChild()removeChild()insertBefore(’’,’’)cloneNode(true/false是否包含子节点)normolize()replaceChild(’’,’’)document..原创 2020-08-23 21:18:32 · 197 阅读 · 0 评论 -
面试知识点总结 - js Object
一组数据和功能的集合创建对象var obj = {}var obj = new Object()实例obj的原型为Object.prototype,具有如下属性和方法constructor:创建当前实例对象的函数hasOwnProperty(属性):给定属性是否在当前实例对象中,而不是在实例的原型对象中propertyIsEnumerable(属性):给定属性是否可以使用for…in枚举isPrototypeOf(object):对象原型是否是当前传入对象的原型..原创 2020-08-21 19:03:15 · 145 阅读 · 0 评论 -
面试知识点总结 - js Array
概念数组是数据的有序列表长度可以动态调整(通过length调整,或随着数据的增加删除改变)每一项可以保存任何数据类型的数据索引范围是0->length-1改变原数组的方法有7个:push、pop、unshift、shift、reverse、sort、splice创建数组var arr = new Array()var arr = []检测数组arr instanceof ArrayArray.isArray(arr)join(分隔符字符串..原创 2020-08-20 12:44:51 · 136 阅读 · 0 评论 -
js的 for、for...in、for...of、forEach、filter、map、some、every的区别
1、for2、for…in3、for…of4、forEach、filter、map、some、every都是数组的遍历方法,都接收两个参数,要在数组每一项上执行的函数,和执行指定函数的作用域对象,第一个参数函数接收3个参数,function(当前数组项的值,当前数组项的索引,数组本身){}forEach:没有返回值filter:返回执行函数后返回true的数组项组成的数组map:返回每一项执行函数后的返回值组成的数组some:执行函数后任意一项返回true,则返回trueevery:原创 2020-08-20 11:43:17 · 242 阅读 · 0 评论 -
面试知识点总结 - js Number
进制表示:10进制直接写8进制以0开头,后面数值的范围是0-7,如果后面的数值超出范围,则忽略前导0,后面的数值看成10进制16进制以0x开头,后面数值的范围是0-9及a-f(或A-F,不区分大小写)数值分类:整数和浮点数浮点数:数值中必须有一个小数点,且小数点后面至少有一位数字浮点数所占的内存空间时整数的两倍,所以ECMAScript会自动的将浮点数转为整数,当浮点数为(1.或1.0)这样时科学计数法(e):e或者E,不区分大小写men = mEn = m*10^nm为数值(整..原创 2020-08-19 12:10:44 · 157 阅读 · 0 评论 -
面试知识点总结 - js String
字符串的概念由0个或多个Unicode字符组成用成对的单引号或者双引号表示字符字面量:换行(\n)、回车(\r)、tab(\t)、空格(\b)、进纸(\f)、\(\)、’(’)、"(")、16进制(\x)、Unicode字符(\u)创建后不能修改,只能先删除,在创建新的字符串的方法toString():返回相应值的字符串表现Boolean、Number、String、Object都有该方法Null、Undefined没有该方法String():Boolean、Number、原创 2020-08-18 17:39:21 · 132 阅读 · 0 评论 -
面试知识点总结 - js 语法、变量、数据类型、标识符、操作符、语句
1. 语法所有都区分大小写(变量名、函数名、操作符、语句等都所有都区分大小写)严格模式:‘use strict’2. 变量用来保存任意数据类型的数据,为松散类型用var定义,会成为该变量所在作用域的局部变量;省略var定义变量,会成为全局变量;函数作用域中的变量会在函数退出后被销毁定义未赋值的变量,默认值为undefined用逗号分隔可以在一个语句中定义多个变量,var a,b,c;3. 数据类型基本数据类型:Undefined、Null、Boolean、Number、原创 2020-08-14 19:39:50 · 136 阅读 · 0 评论 -
面试知识点总结 - js Boolean
Boolean()后为false的值:false、‘’、0、NaN、undefined、null流程控制语句可以触发强转:如if()boolean有基本类型(false、true)和引用类型(通过new构造函数:new Boolean(false)) let obj = new Boolean(false); //根据构造函数Boolean,new出来的实例对象,所以原型链上有Boolean,原型对象(Boolean.prototype)为对象,所以原型链上还有Object //obj...原创 2020-08-13 18:51:54 · 122 阅读 · 0 评论 -
面试知识点总结 - js 回调函数、闭包、递归、尾调用、尾递归
function fn(){ console.log('fn')}//回调函数//一个函数,参数为函数,当满足某个条件是执行该参数函数function test(fn){ setTimeout(() => { fn() }, 1000);}test(fn)//闭包//一个函数,返回一个函数,在里面的函数中引用外面函数的变量function test1(){ let a = 'aa'; return function(){原创 2020-08-11 15:26:34 · 319 阅读 · 0 评论 -
js 元素大小和位置、点击事件中点的位置
1. 元素的大小clientWidth:content+paddingoffsetWidth:content+padding+border+scrollscrollWidth:滚动内容的总高度getComputedStyle:getBoundingClientRect():元素在页面中相对于视口的位置,返回包含top、bottom、left、right、width、height等的对象;right - left = offsetWidth,bottom - top = offsetHeight原创 2020-06-29 17:33:10 · 593 阅读 · 0 评论 -
js获取属性方法:.和[]
let obj = { a:{ aa:11, aaa:22 }, b:{ bb:33, bbb:'bbb' }, c:{ cc:'cc', ccc:'ccc' }}obj.a //a为字符串for(let o in obj){ console.log(obj[o]) //o为变量 console.log(obj['a']) //a为字符串}点语原创 2020-06-29 14:09:46 · 244 阅读 · 0 评论 -
target和currentTarget的区别,以及currentTarget为null的问题
1. target和currentTarget区别target:点击的元素currentTarget:绑定事件的的元素如图:事件绑在外面的button上,currentTarget为button当点击事件点在button上时,target也为button等于currentTarget当点击事件点在里面的span上时,target为span,currentTarget还是为button,两者不同2. currentTarget在浏览器打印出来的event中为null问题解决原创 2020-06-28 19:32:44 · 914 阅读 · 0 评论 -
JavaScript ArrayBuffer浅析
简介:ArrayBuffer又称类型化数组。javascript数组(Array)长什么样子,相信大家都清楚,那么我说说差别应该就可以了解这究竟是个什么了!数组里面可以放数字、字符串、布尔值以及对象和数组等,ArrayBuffer放0和1组成的二进制数据数组放在堆中,ArrayBuffer则把数据放在栈中(所以取数据时后者快)ArrayBuffer初始化后固定大小,数组则可以自由增减。(准确的说,视图才应该跟数组来比较这个特点)构造函数:// new ArrayBuffer(Bytelengt转载 2020-06-22 08:50:43 · 838 阅读 · 0 评论 -
ASCII、Base64、Unicode(UCS-2、UTF-8、Little endian、Big endian)编码总结
ASCII一个字符(byte)有8个二进制位(bit),每一位都是0或1,最多表示256个符号ASCII码一共规定了128个字符的编码,即第一位为0,后7位来表示这128个符号包括32个不能打印出来的控制符号和键盘上的96个字符绿色(52):26个英文字符的大小写格式红色(44):每个按键都有两种符号,例如1和!蓝色(2):空格和退格Base64把一串二进制转换成另一种二进制串把每三个8Bit的字节转换为四个6Bit(38=46=24),然后把6Bit再添两位高位0,组成四个原创 2020-06-21 13:24:09 · 2507 阅读 · 0 评论 -
bit(位)和byte(字节)区别以及进制间转换
bit和bytebit:位(比特) byte:字节 word:字1 word = 2 byte = 16 bit1 byte = 8 bit1 kb = 1024 bytebps 是 bits per second 的简称Bps 是 Byte per second 的简称电脑一般都以 Bps 显示速度;1Mb/s的带宽,等于 1Mb/s = (11024)Kb/s = (11024/8)KB/s = 128KB/s;50Mb/s的带宽就是50*128KB/s即6400KB/原创 2020-06-20 08:47:15 · 2380 阅读 · 0 评论 -
ASCII、Unicode、UTF-8 和 Base64 等编码
ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态(-128~127),这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。ASCII码一共规定了128个字符.转载 2020-06-20 08:40:28 · 1216 阅读 · 0 评论