
js
沐风系大佬
我偷电瓶养你,联系方式qq:1215323732
展开
-
文件转二进制文件流
// 将文件转为二进制export function fileParse(file, type) { const caseType = { 'base64': 'readAsDataURL', 'buffer': 'readAsArrayBuffer' } const fileRead = new FileReader() return new Promise(resolve => { fileRead[caseType[type原创 2021-07-13 16:55:02 · 2898 阅读 · 0 评论 -
deepClone深拷贝
function cloneDeep(data) { let t = type(data), o, i, ni; if (t === 'array') { o = []; for (i = 0, ni = data.length; i < ni; i++) { o.push(cloneDeep(data[i])) }; return o; } else if (t === 'object') { o = {}; for (i in原创 2021-06-22 16:58:40 · 1299 阅读 · 0 评论 -
手写 JSON.stringify()
function getType(attr) { let type = Object.prototype.toString.call(attr); let newType = type.substr(8,type.length-9); return newType;}export function StringIfy(obj) { if(typeof obj !== "object" || getType(obj) === null) { return原创 2021-06-15 11:21:36 · 503 阅读 · 0 评论 -
webworker
仅作使用记录<script id="worker" type="app/worker"> addEventListener('message', function (e) { console.log("scrip",e) postMessage(e.data); }, false);</script><script> var blob = new Blob([document.querySelector('#worker.原创 2021-03-22 10:19:40 · 239 阅读 · 0 评论 -
手写js实现new
new的过程:1.创建新对象;2.将新对象的原型指向构造函数;3.将构造函数的属性绑定到新对象上;4.返回新对象;根据步骤我们一一实现function myNew(fn,...args){ let obj = {}; obj.__proto__ = fn.prototype; const result = fn.call(obj,...args); return result == 'object' ? result : obj;}...原创 2021-03-18 13:15:19 · 198 阅读 · 0 评论 -
发布订阅者模式以及vue中使用解析
发布订阅模式:也称作观察者模式,定义对象间的一对多的依赖关系,当一个对象的状态发 生改变 时,所有依赖于它的对象都将得到通知; 编码中常用的场景://订阅事件window.addEventListener('click',()=>{ alert("监听到某事件")})//发布事件window.click() 举个例子:B是天气预报中心,用户A想从B处获取天气预报;A就要将自己的联系方式储存到B处,当天气预报更新以后,B发送天气信息给A; 此处:存储就相当.原创 2021-03-16 11:46:05 · 428 阅读 · 0 评论 -
import和require区别
1. 写法不一致exports/require写法const fs = require('fs') exports.fs = fs module.exports = fsimport/export写法import fs from 'fs'import {default as fs} from 'fs'import * as fs from 'fs'import {readFile} from 'fs'import {readFile as read} from 'fs'imp原创 2021-03-12 15:07:52 · 147 阅读 · 0 评论 -
addEventListener监听事件,以及初始加载页面触发问题
addEventListener("click",function(){},true);第三个参数:为true时捕获,false时冒泡;vue中使用methods:{ getPic(){ console.log("触发监听") if (window.defectPic !== "END") { this.picData = "data:image/png;base64," + window.defectPic; if (this.submitImgArr.length &l原创 2021-03-10 16:47:50 · 2833 阅读 · 0 评论 -
数据类型判断typeof instanceof
正则、null、array 、Date等都为object;instanceofconst [a3, b3, c3, d3] = [[], {}, new Date(), /\s/];console.log(a3 instanceof Array); // trueconsole.log(b3 instanceof Object); // trueconsole.log(c3 instanceof Date); // trueconsole.log(d3 instanceof RegExp); .原创 2021-03-10 09:46:25 · 123 阅读 · 0 评论 -
闭包
1.可以读取函数内部的变量2.让这些变量的值始终保存在内存中原创 2021-03-08 10:53:14 · 69 阅读 · 0 评论 -
babel/polyfill
Babel官方文档:https://babeljs.io/docs/en/configurationbabel:目前接触到的是将ES6转换为ES5;polyfill:对浏览器不支持的API进行转换;(暂做笔记,后续更新)原创 2021-03-01 16:30:15 · 216 阅读 · 0 评论 -
CSRF 和 XSS 的区别 Async/Promise/Generator apply、call与bind
CSRF 和 XSS 的区别区别一:CSRF:需要用户先登录网站A,获取 cookie。XSS:不需要登录。区别二:(原理的区别)CSRF:是利用网站A本身的漏洞,去请求网站A的api。XSS:是向网站 A 注入 JS代码,然后执行 JS 里的代码,篡改网站A的内容。apply、call与bindapply传数组或对象,但对象无作用...原创 2021-03-01 16:27:35 · 126 阅读 · 0 评论 -
手写js--forEach
forEachif(!Array.prototype.myEach){ Array.prototype.myEach = function(callback,thisArg){ var T ,k; console.log("this===",this,thisArg) if(this === null){ throw new TypeError('this is null or not defined'); } var O = Object(this); consol原创 2021-02-25 13:07:16 · 921 阅读 · 1 评论 -
js数组内存分配
JavaScript 中的数组有很多特性:存放不同类型元素、数组长度可变等等,这与数据结构中定义的数组结构或者C++、Java等语言中的数组不太一样,那么JS数组的这些特性底层是如何实现的呢,我们打开V8引擎的源码,从中寻找到了答案。V8中对数组做了一层封装,使其有两种实现方式:快数组和慢数组,快数组底层是连续内存,通过索引直接定位,慢数组底层是哈希表,通过计算哈希值来定位。两种实现方式各有特点,有各自的使用情况,也会相互转换。一、背景使用 JS 的数组时,发现 JS 的数组可以存放不同类型的元素、并且转载 2021-02-22 11:02:41 · 3355 阅读 · 0 评论 -
js遍历
原创 2021-02-02 10:45:48 · 137 阅读 · 0 评论 -
正则匹配数字并高亮
let replaceReg = new RegExp(/[^0-9]+/g,'g');let replaceHtml ="<span style='color:#333;font-weight:400'>$&</span>";this.count = this.count.replace(replaceReg,replaceHtml)原创 2020-07-23 14:00:47 · 291 阅读 · 0 评论