js学习
文章平均质量分 69
前端段
这个作者很懒,什么都没留下…
展开
-
solidity全局变量&modify的顺序
truffle原创 2022-02-08 18:36:14 · 1711 阅读 · 0 评论 -
solidity中未解决的问题
1.请问ethscan上查到bytecode代码,可以反编译为solidity代码嘛?2.函数returns中,可以返回reference type类型嘛?原创 2022-03-04 11:01:38 · 145 阅读 · 0 评论 -
solidity开发中的问题(assert revert require&节约gas)
1.如果compile 0.4.23,找不到对应的版本,可以先选auto compile。2.callData就是console里面的input数据原创 2022-03-04 10:44:52 · 280 阅读 · 0 评论 -
在ethscan.io上发布和验证合约源码
在ethscan.io上发布和验证合约源码1.公开token的源码,增加透明度和投资人的信任度;2.上传源码后,人们可以在Etherscan查看当前token的源码,同时也可以很方便的看到token的相关信息。#合约代码没有通过 Verify Your Contract Source Code的样子#合约代码通过 Verify Your Contract Source Code的样子下面我们来看看怎么通过验证先看一下源码验证页面构造通过上图可以看到,除了构造参数的byteCode外,原创 2022-03-04 09:31:39 · 559 阅读 · 0 评论 -
solidity函数
前言一、receive&fallback是什么?二、函数可见性visility1.public2.private3.external4.internal三、函数状态易变性mutability1.view2.pure3.payable4.non-payable四、函数修饰符modifiy五、函数returns原创 2022-03-03 17:40:00 · 4500 阅读 · 0 评论 -
solidity学习二(赋值数据位置、modify、Event、receive&fallback、数组)
赋值位置1.memory 引用类型=storage 引用类型,没有修改指针,而是深拷贝。pragma solidity ^ 0.5.0;contract Locations {uint[] public stateVar = [1,2]; //storagefunction doSomething() public returns(uint) {uint[] memory localVar; //memorylocalVar = stateVar;stateVar = [3,4];requ原创 2022-03-02 14:06:45 · 542 阅读 · 0 评论 -
23种设计模式之外的一些设计模式
23三种之外的:1.构造函数模式:function Animal(name, color){ this.name = name; this.color = color; this.getName = function(){ return this.name; }} // 实例一个对象 var cat = new Animal('猫', '白色'); console.log( cat.getName() );2.混合模式(混合继承)3.防抖原创 2021-03-08 08:09:02 · 896 阅读 · 0 评论 -
后端返回map对象,前端解析
1、返回对象结构const mapObj = { a: ‘1’, b: ‘2’,c:‘3’ };2、前端接收,默认为对象3、转换为ES6 map对象const map = new Map(Object.entries(mapObj));4.访问:map.get(‘a’)5、Apimap.entries():返回所有成员的遍历器。map.forEach():遍历 Map 的所有成员特点:不管map多大,访问速度不变。...原创 2022-03-01 10:23:26 · 4862 阅读 · 0 评论 -
路由hash和history模式
hash值,也叫散列函数。释义bai:通过一定的哈希算法(典型du的有MD5,SHA-1等),将一段较zhi长的数dao据映射为较短小的数据,这段小数据就是大数据的哈希值。他有这样一个特点,他是唯一的,一旦大数据发生了变化,哪怕是一个微小的变化,他的哈希值也会发生变化。另外一方面,既然是DNA,那就保证了没有两个数据的哈希值是完全相同的。哈希值的作用:哈希值,即HASH值,是通过对文件内容进行加密运算得到的一组二进制值,主要用途是用于文件校验或签名。正是因为这样的特点,它常常用来判断两个文件是否相同。原创 2020-07-08 14:49:05 · 473 阅读 · 0 评论 -
http头部有哪些信息&http启动后做了什么
Request Header:GET /sample.Jsp HTTP/1.1 //请求行Host: www.uuid.online/ //请求的目标域名和端口号Origin: http://localhost:8081/ //请求的来源域名和端口号 (跨域请求时,浏览器会自动带上这个头信息)Referer: https:/localhost:8081/link?query=xxxxx //请求资源的完整URIUser-Agent: Mozilla/5.0 (Windows NT 10.0原创 2021-07-30 19:24:54 · 194 阅读 · 0 评论 -
js字符串操作方法
字符串操作slice substring substr substr split join String(1234) toString 都不会改变原字符1.slice(start, end)2.substring(start, end)3.substr(start, number)4.split(’,’) // 根据, 拆分为数组5.join(’’) // 数组转字符6.String(1234)\toString7.concatvar stringValue = "hello ";va原创 2021-05-17 06:28:12 · 178 阅读 · 0 评论 -
算法的时间空间复杂度,维度
算法:解决问题的方法和步骤。看一个算法是否优秀时,我们要考虑时间复杂度和空间复杂度。特别是时间复杂度。一、时间复杂度常见的时间复杂度有:O(1)O(logn) //等于O(log2n),2在下面,n在上面,一般把2省略O(n)O(nlogn)O(n^2)O(2^n)O(n!)O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(2^n) < O(n!)1.O(1)function int(n){var i原创 2021-05-08 11:52:31 · 690 阅读 · 0 评论 -
Object的方法
1.Object.is(value1,value2)// true or falseNaN === NaN // false{} === {} // false+0 === -0 // true所以出现了:es6的isObject.is(NaN,NaN)2.Object.assign(target,source1,source2)//将源对象可枚举属性赋值到target上,如果重名,后面的覆盖前面的,类似于css样式覆盖,或者mixinsvar target={a:1}var sourc原创 2021-05-06 19:19:54 · 267 阅读 · 0 评论 -
数组的29个方法
数组的方法一共29个:1.转字符:toString, join, str.split, valueOf2.堆栈方法:push 返回增加后的长度pop 返回删除的最后一个项目unshift 返回增加数组的长度shift 删除的项目3.排序 reverse() sort随机排序var arr = [1,2,3,4,5]arr.sort() // 从小到大arr.sort((a,b)=>b-a) // 从大到小arr.sort(()=> Math.rando原创 2021-05-03 13:46:41 · 624 阅读 · 0 评论 -
小程序首屏加载慢
检查图片检查图片包括:图片是否过大图片懒加载如果首页要加载的有很多列表或者图片展示,此时要注意图片加载时长,如果超过一定时间,懒加载是个不错的办法。图片是否可以用cdn托管对于icon小图标可以放在小程序项目image文件夹里,但是如果图片占用资源,放在cdn托管既可以缩小代码包的大小还可以提升加载效率。检查首屏接口耗时一个接口一个接口的排查,在network中查看加载的时间,逐个排查原因,所有请求最好在1s内返回结果。检查有无错误日志在JS中如果在同步任务中,一..原创 2021-04-20 10:48:00 · 488 阅读 · 0 评论 -
js内存回收机制
js数据类型分类:1.基本类型:string、number、boolean、null、undefined、symbol2.引用类型:对象object、array、function、reg、data、set原创 2021-04-06 16:43:20 · 506 阅读 · 0 评论 -
状态码提示
状态码提示:1xx(临时响应)2xx (成功)3xx (重定向)4xx(请求错误)5xx(服务器错误)原创 2021-03-17 08:42:06 · 112 阅读 · 0 评论 -
前端解决跨域的几种方式
1、 通过jsonp跨域2、 document.domain + iframe跨域3、 location.hash + iframe4、 window.name + iframe跨域5、 postMessage跨域6、 跨域资源共享(CORS)7、 nginx代理跨域8、 nodejs中间件代理跨域9、 WebSocket协议跨域...原创 2021-03-01 17:35:40 · 1158 阅读 · 0 评论 -
设计模式的六大原则。简称:SOLID
设计模式的五大原则。简称:SOLID单一职责原则 (Single Responsibility Principle, SRP)含义:一个类只负责一个功能领域中的相应职责。栗子:餐厅服务员负责把订单给厨师去做,而不是服务员又要订单又要炒菜。好处:降低类复杂性降低,提高代码可读性,提高可维护性。开闭原则 (Open-Closed Principle, OCP)含义:软件模块应该对扩展开放,对修改关闭。在程序需要进行新增功能的时候,不能去修改原有的代码,而是新增代码。栗子:一开始做了普通计算器程原创 2021-02-24 22:26:57 · 920 阅读 · 1 评论 -
vue2和vue3的响应式数据原理和区别
vue2用defineProperty({},key,handel)缺点:Object.defineProperty() 无法监控到数组下标的变化,对象的增加。对于新增加的属性,需要再手动初始化才能被监测。通过 Vue.set()和 Vue.delete来实现响应式的。需要重新执行observe(arr),遍历,影响性能。function defineReactive(data, key, value) { Object.defineProperty(data, key, { enumerable原创 2021-02-21 14:23:44 · 1889 阅读 · 0 评论 -
快速记住23种设计模式
签合同,要分三步:1.创建新建合同 2.设计合同内容结构 3.要遵守合同的行为规范(对应创建,结构,行为三部分)口诀:单原二厂建 (创建类的5个模式,二厂是指简单工厂和抽象工厂)桥(帮)组享外带装适 (结构类的6个模式)观摩(模)命职状房(访)中洁厕(解策)备跌(迭)设计模式主要分三个类型:创建型、结构型和行为型。创建型有:一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖原创 2021-02-17 00:45:01 · 7047 阅读 · 1 评论 -
正则的笔记三
正则的笔记三正则的方法有哪些呢,分字符串的方法,和正则的方法两种。一、字符串的方法1.str.replace(reg, (totalStrin, index0,…){}2.str.match(reg)3.str.matchAll(reg) // 返回interactor4.str.search(reg) // 返回索引二、正则的方法1.test reg.test(str) // 返回true 或false2.exec reg.exec(str) //返回数组,像match1.re原创 2021-02-17 00:34:58 · 290 阅读 · 1 评论 -
正则的笔记二
常见密码正则表达式/^(?![0-9]+)(?![a−zA−Z]+)(?![a-zA-Z]+)(?![a−zA−Z]+)[0-9A-Za-z]{6,16}/其中(?![0−9]+/其中(?![0-9]+/其中(?![0−9]+)表示排除掉只有数字的组合,(?![a-zA-Z]+$)表示排除掉只有字母的组合,[0-9A-Za-z]表示必须有字母或数字(?!\d+)(?![a−z]+)(?![a-z]+)(?![a−z]+)(?![A-Z]+KaTeX parse error: Undefined原创 2021-02-13 23:36:37 · 300 阅读 · 1 评论 -
正则的笔记一
在线测试正则的网址:https://regexr-cn.com/() 小括号 分组[] 中括号字符范围{2,3} 位数大括号范围字符类1.1 字符集 [abc] // 等于(a|b|c)1.2 非集 [^abc]1.3 范围 [g-s]1.4 点 . // 匹配除换行符之外的任何字符。 等价于 [^\n\r].1.5 单词 \w1.6 非单词 \W1.7 数字 \d1.8 非数字 \D1.9 空白字符 \s1.10 非空白字符 \S锚定(字符串范围)2.1 开头原创 2021-02-11 19:23:08 · 315 阅读 · 0 评论 -
多维数组展平的几种方式
需求:多维数组=>一维数组let arr= [1, [2, [3, [4, 5]]], 6];let str = JSON.stringify(ary);方式一:ary.flat(Infinity)方式二,递归:function flatter(arr){return [].concat(…arr.map(x =>Array.isArray(x)? flatter(x) : x))}或者:while (ary.some(Array.isArray)) {ary = []原创 2021-02-09 07:21:40 · 779 阅读 · 0 评论 -
es6常用语法
es6常用语法1.let const块级作用域,不能重复声明,没有提升const常量,引用类型暂时性死区2.字符串拼接两个单引号(反的单引号)拼接字符串3.解构赋值对称赋值,更容易理解,一个数组= 另外一个数组,一个对象=另外一个对象4.展开运算符 …复制数组方便var arr1 = [1,2,3,[4,5],[6,7,[8,9]]];var arr2 = […arr1];arr2.push(1000);arr1===arr2 // false5.数据类型 new map原创 2021-02-06 22:39:38 · 1324 阅读 · 1 评论 -
浏览器输入地址后,执行了什么?
浏览器输入地址后,执行了什么?1.HTTP底层走的是TCP/IP,如果不知道IP,就需要DNS协议解析。2.TCP连接后收发HTTP数据包。3.为了降低服务器压力,加快访问速度,有很多缓存,比如,客户端缓存,CDN缓存,负载均衡器缓存等。4.浏览器主要发送HTTP请求,接收HTTP响应,然后然后进行渲染,展示到界面。下面是4的详细内容: 先来个列表总结一下,后面慢慢展开。 1. 使用HTML创建文档对象模型(DOM) 2. 使用CSS创建CSS对象模型(CSSOM) 3. 基于DOM原创 2021-01-31 00:05:37 · 398 阅读 · 1 评论 -
设计模式学习笔记
js 设计模式一共23种设计模式,分三大类一、创建模式(5种)单例模式一个类只有一个实例,并且提供可全局访问点缺点耦合度高工厂模式二、结构模式(7种)三、行为模式(11种)命令模式、观察者模式...原创 2021-01-02 23:45:32 · 202 阅读 · 0 评论 -
防抖节流
防抖:在触发函数时,不立即执行函数。而是延迟执行,如果在延迟过程中再次触发,清除之前的延迟,重新计算延迟时间。关键:seTimeout clearTimeoutfunction debonce(fun,delay){var timerreturn function(){if (timer){clearTimeout(timer)}timer = setTimeout(fun,delay)}}节流:合并多次触发函数为一次,在一定的时间范围内。function throttle(fu原创 2021-01-03 10:06:55 · 103 阅读 · 0 评论 -
继承的7种方式
js的继承几种方式:1.es6的最简单,关键字extends 、constructor、super()// es6继承 class Animal { //构造函数,里面写上对象的属性 constructor(props) { this.name = props.name || 'Unknown'; } //方法写在后面 eat() {//父类共有的方法 console.log(this.name + " will eat pests."原创 2021-01-02 17:41:36 · 331 阅读 · 0 评论 -
js判断数据类型
js判断数据类型的方法typeof // 判断基础类型好用,但是引用类型都是Objecta instanceof b // a是否是b对象上的原型对象上Array.isArray()Object.prototype.toString.call(111) // 最完美的判断方式原创 2020-12-31 22:06:48 · 81 阅读 · 0 评论 -
var let const不同
var let const区别1.函数提升优先于变量提升,函数提升会把整个函数挪到作用域顶部,变量提升只会把声明挪到作用域顶部2.var 存在提升,我们能在声明之前使用。 let 、 const 因为暂时性死区的原因,不能在声明前使用3.var 在全局作用域下声明变量会导致变量挂载在 window 上,其他两者不会4.let 和 const 作用基本一致,但是后者声明的变量不能再次赋值,如果是引用类型,里面的元素可以修改。如对象的value值,数组的下标...原创 2020-12-30 23:57:07 · 75 阅读 · 0 评论 -
前端命名空间管理
var MYNAMESPACE = MYNAMESPACE || {}; // 这句是核心,判断是否冲突MYNAMESPACE.person = function(name) {this.name = name;};MYNAMESPACE.person.prototype.getName = function() {return this.name;};// 使用方法var p = new MYNAMESPACE.person(“doc”);p.getName(); // d原创 2020-12-29 10:08:51 · 227 阅读 · 0 评论 -
display和visibility的区别
display和visibility的区别,在控件中使用:display:none 隐藏后 不会占位置 下面的元素会跳上来而visibility:hidden隐藏后 它还是会将这个位置占着 下面的元素上不来原创 2020-12-20 05:46:22 · 183 阅读 · 1 评论 -
window.name cookie、sessionStorage、localStorage区别
cookie、sessionStorage、localStorage区别相同之处:1.都是以key和value形式存储2.存储自客户端,在浏览器中,开发者工具f12,application里面查看不同之处:cookie:打开页面就自动生成,记录一些用户习惯,访问次数等随着header每次提交(可用通过浏览器开发者工具network查看)。同一个域名下跨页面可用访问。4klocalStorage:不随头部提交,可长时间保留。同一个域名下跨页面可用访问。5MsessionStorage:原创 2020-12-15 19:30:50 · 237 阅读 · 0 评论 -
for forEach map for in for of区别
for,forEach, for in, for of , map区别1.for 可以加break return continue2.forEach不能加 break return continue3.map 只能遍历数组,默认有返回值var arr = [‘星期一’, ‘星期二’, ‘星期三’];var a = arr.map(function(item){console.log(item)return item === ‘星期二’})console.log(a)3.for in会原创 2020-12-13 16:04:18 · 570 阅读 · 0 评论 -
class的使用
访问构造函数的内部变量方法:1.thisfunction Dog(){ this.name = "旺财" } var mydog = new Dog() console.log(mydog.name)2.prototypefunction Dog(){}var mydog = new Dog()Dog.prototype.name = "旺财"console.log(mydog.name)3.Object.create()var Dog = {name:'旺财'}var mydog原创 2020-12-12 20:04:54 · 122 阅读 · 0 评论 -
gitlens插件使用
gitlens插件可以直接在光标处显示代码编写人以及时间;方便共同开发时候git做版本控制时候的相关代码管理。git history查看更新日志原创 2020-12-03 14:13:10 · 4421 阅读 · 1 评论 -
零配置打包工具是parcel
零配置打包工具是parcel最近在搞一个UI组件库,一开始选择的打包工具是parcel:en.parceljs.org他号称是0配置的打包工具,用起来确实是不需要像webpack一样配置很多东西,很方便~今天在打算打包umd的时候在parcel的中文官网完全没发现打包相关的资料,google了一下在parcel的github里面发现了一些issue,找着找着发现了这么一个issue:github.com/parcel-bund… 看完之后我确认是parcel的中文文档过时太久导致没有打包UMD相关的资原创 2020-08-04 21:55:02 · 198 阅读 · 0 评论 -
jest单元测试
npm install jest -D // 安装测试框架npm run test或者在package.json配置,响应式测试:“scripts”: {“test”: “jest --watchAll”}Jest中常用的匹配器toBe()匹配器:toBe匹配器用来比较原始值或检查对象实例的引用一致性,类似于 ‘Object.is’ 方法和 ‘===’.// toBe匹配器test('测试 结果是否等于 "abc"', () => { const a = 'abc'; e原创 2020-08-02 10:05:24 · 396 阅读 · 0 评论