javaScript基础
文章平均质量分 67
火腿肠烧烤大赛冠军
F=-F
展开
-
JS中的定型数组与视图
定型数组 了解定型数组前先复习一下基础知识: 1byte(又称为字节) = 8bit(又称为比特、位) 1kb = 1024byte; 前言 之所以要使用定型数组主要是因为WebGL的需求 因此在ES6中引入定型数组来解决这个问题,并提供更高性能的算术运算。所谓定型数组,就是将任何数字转换为一个包含数字比特的数组,随后就可以通过我们熟悉的JS数组方法来进一步处理 用人话说就是 js存储数字是以64位浮点格式存储,而一个字节仅需要8位 所以浪费太多了 新弄出来一个数据类型叫定型数组 这个数组可以存储数据原创 2022-05-17 19:25:33 · 514 阅读 · 0 评论 -
javaScript-模块化开发
开发一个模块管理引擎 注意,模块仅在开始时定义一次 后续所有的使用都是使用最初实例化的模块(这也正是我们所需要的) let module = (function () { const moduleList = {}; function define(name, modules, action) { modules.map((m, i) => { modules[i] = moduleList[m]; }); moduleList[原创 2021-07-11 22:16:52 · 224 阅读 · 2 评论 -
javaScript-你不知道的类
类语法的定义 基础就是对原型的操作 声明和java差不多 class User { constructor(name) { this.name = name; } getName() { return this.name; } } let hd = new User("123"); console.log(hd.getName()); 类的内部工作机制就是原型操作 类就是构造函数的语法糖 实质为操作prototype而已 对象属性的声原创 2021-07-06 21:08:41 · 244 阅读 · 4 评论 -
javaScript-原型链
什么是原型 你没车,你爸有车,你借着开就是原型 有些对象可以没有原型 (Object.create(null,{})) 如上创建的方法都没有 据说Vue中创建对象都是这么创建的 原型链调用方式 a.__ proto __(当函数当作对象调用时):自己用的 b.prototype(函数实例化出来之后自动给新创建对象指定原型):用来给别人的只有函数有 简而言之,第一个是自己本身的,第二个是当他作为构造函数时候用的 向军大叔的图: 这里很重要所以自己跑一下demo let ABC = function原创 2021-07-01 22:11:15 · 374 阅读 · 1 评论 -
javaScript-对象
面向对象编程 let user = { name: "小孙吗", grade: [ { name: "js", score: 99 }, { name: "docker", score: 76 } ], average() { let total = this.grade.reduce((t, l) => t + l.score, 0); return `${this.name}的平均成绩是: ${total / th原创 2021-06-19 22:49:18 · 235 阅读 · 1 评论 -
javaScript-宏任务与微任务/事件轮询
宏任务与微任务 javaScript是单线程语言(如果多线程dom会疯掉) 所以在同一时间只能执行一个任务,称为主线程,用来执行同步任务 同时还有两个任务列表用于存放异步任务,宏任务、微任务 执行顺序为:主线程=>微任务=>宏任务 有关定时器 定时器模块⏲,到达时间点将其放入宏任务队列 如果主线程没有任务则执行,如果有则等待执行完成后再继续执行 如果有两个相同时间的定时器则上面的先执行下面的后执行 如果两个时间不同的定时器则时间短的先执行时间长的后执行 注意点: 定时器的⏲是在定时器模原创 2021-06-14 21:45:21 · 5885 阅读 · 13 评论 -
javaScript-闭包与作用域
环境与作用域 全局环境不会被回收 任何位置都可以访问全局环境 函数的作用域和环境 函数执行后会每一次都会创建一块新的作用域 父级函数可以访问子函数作用域 延伸函数环境生命周期 只要有人在用,环境就不会被清空,所以可以采用复制的方式 function sam() { let n = 1; return function sum(){ console.log(++n); }; // sum(); }; let sss原创 2021-06-13 17:15:48 · 211 阅读 · 3 评论 -
javaScript-函数
全局函数 函数直接声明/用var声明会放到全局作用域中 let声明不会放全局作用域中 建议不要直接使用函数,将函数放在类/模块中再进行使用 函数也可以提升(但仅限于匿名函数) 立即执行函数与函数作用域冲突 (function(参数){ })(参数)—可以解决命名冲突问题 {}也可以解决 要记得函数默认值使用技巧 函数一般可以接受任何参数,也可以作为参数 arguments是函数接收的所有参数集合 之前解析参数 function(){ […arguments] } 现在解析参数 function(…a原创 2021-06-08 22:30:00 · 146 阅读 · 0 评论 -
javaScript-Map/weakMap
什么是map map就是可以将函数、数字、对象作为对象的键值存储的数据结构 let nap = new Map(function(){},‘1234’); let nap = new Map();nap.set(function(){},‘1234’); 突然发现这样的链式操作很好 可以对类似的函数进行封装,如果需要调用即可 map的一些方法 创建:let map = new Map(); 删除:map.delete(); 彻底删除:map.clear(); 检索:map.has(); 遍历:原创 2021-06-05 22:06:10 · 231 阅读 · 1 评论 -
javaScript - Set/WeakSet
什么是set 与数组类似,但是其中不可以存放相同的值 // let arr = [1, 1, 1, 1, 1, 1]; // console.table(arr); // let set = new Set([1, 2, 3, 4, 5]); // set.add(1); // set.add("1"); // console.log(set);//1 与对象区别 对象数字、字符串都被视为一个,无法重复 set中严格校验可以相同 set的创建 let原创 2021-06-05 17:08:24 · 122 阅读 · 0 评论 -
javaScript基础-Symbol 类型
symbol的基本使用 定义方法: 二者区别: 第二种会在内存中记住(我理解是当再次声明时 相当于把地址给了新变量) 第二种是在全局范围内定义symbol可以通过Symbol.keyFor()查询到 let sss= Symbol("hello"); let sssa= Symbol.for("dddd"); symbol不会相等 // let sss= Symbol("a"); // let edu = Symbol("a"); // consol原创 2021-06-05 15:28:56 · 218 阅读 · 0 评论 -
JavaScript 值类型使用
typeof typeof无论后面跟对象还是数组 其结果均为object 识别方法: construtor instanceof(原型链方法) toString+call 截图如下: 字符串 转译符号 let sam = ‘ni hao’ shanghai’; let sam = ‘ni hao \ shanghai’; let sam = ‘ni hao\t shanghai’; 字符串的连接 let a = a; let b = b; let c = ${a}+${b}; 模板字面量嵌套使原创 2021-06-03 22:38:16 · 122 阅读 · 1 评论 -
javascript-你不知道的数组
1. 用console.table来打印数组看的更清楚 2. cosnt声明数组/对象(引用类型)的改变机制 引用类型是将一个地址存在于变量中,而const无法改变的是当前变量所对应的内容,所以: const arr = [1,2,3]; =>arr = [1,2]; //可以改变 =>arr = []; //不可以改变 3. array.of创建数组 array.of创建的数组 let a = new Array(6); // [6] console.log(a.原创 2021-05-31 22:32:52 · 203 阅读 · 1 评论 -
javaScript运算符与流程控制
短路运算符 let sex = prompt(“请输入必须”)|| ‘保密’; 第一个值成立则不考虑第二个值 循环中的label标签 例如 sun:for(let i=0;i<100;i++){ if(i%2==0)countinue sun } 代码在continue之后会直接跳转到sun的位置 使用: 这样写就不单单推出本次循环 会直接退出到最外层 ...原创 2021-05-26 20:58:44 · 136 阅读 · 0 评论 -
javaScript你不知道的闲杂知识
页面端的js避免延迟 有些需要很久的js引入时,尽量放在下面(有可能因为加载这个文件导致渲染延迟) 前端访问的基本流程 注释与执行符 // /* */ ;尽量加上 或者下载一个插件 变量解析过程以及变量提升 js代码执行之前会预先将代码预解析一遍 var web = "hdcms"; 包含两个过程 var web; web = "hdcms"; 在浏览器执行之前会预先加载第一步(无论程序将是否执行) 例如: if(false){ var sam =原创 2021-05-25 21:13:16 · 210 阅读 · 3 评论