heiheiheiheiheiheii
码龄3年
关注
提问 私信
  • 博客:56,830
    56,830
    总访问量
  • 92
    原创
  • 456,323
    排名
  • 9
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2021-08-04
博客简介:

m0_60703077的博客

查看详细资料
个人成就
  • 获得84次点赞
  • 内容获得3次评论
  • 获得55次收藏
创作历程
  • 76篇
    2022年
  • 17篇
    2021年
成就勋章
TA的专栏
  • 编程风格
    2篇
  • javaScript
    30篇
  • 算法
    13篇
  • 面试
    10篇
  • V8
    3篇
  • Vue源码
    5篇
  • h5移动端
    8篇
  • CSS
    7篇
  • 库
    1篇
  • ES6
    3篇
  • node
    3篇
  • 计算机网络
    4篇
  • babel
    1篇
  • 笔记
  • webpack
    3篇
兴趣领域 设置
  • 前端
    html5javascriptcssajaxvue.js
  • 后端
    node.js
  • 网络与通信
    http
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

如何设计好一个组件

如何设计好一个组件
原创
发布博客 2022.10.01 ·
1155 阅读 ·
2 点赞 ·
1 评论 ·
1 收藏

从运行时、文法、语义三方面梳理JavaScript知识体系

用一定的词法和语法,表达一定语义,从而操作运行时。
原创
发布博客 2022.09.26 ·
416 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

最小覆盖子串

/** * 解题思路 * - 包含所有的包含 T 的子串 * - 找出长度最小的那个字串,返回即可。 * * 解题步骤 * - 用双指针维护一个滑动窗口。 * - 移动右指针,找到包含 T 的子串,移动左指针,尽量减少包含 T 的子串的长度. *//** * @param {string} s * @param {string} t * @return {string} */var minWindow = function(s, t) { let l = 0, .
原创
发布博客 2022.05.31 ·
246 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

V8执行原理和优化策略

V8执行原理和优化策略浏览器内核Gecko: 早起被 Netscape 和 Mozila firefox 浏览器使用。Trident: 微软开发,被 IE4~IE1 浏览器使用,但是 Edge 浏览器使用 Blink.Webkit: 评估给予 KHTML 开发、开源的,用来Safari、Google Chrome 之前也是使用的。Blink: 是 Webkit 的一个分支,Google 开发,应用于 Google Chrome、Edge 、Opera。浏览器内核主要是负责浏览器的排版引擎,也称
原创
发布博客 2022.05.18 ·
523 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

V8垃圾回收机制

垃圾回收垃圾回收分为手动回收和自动回收两种策略。js 需要垃圾回收吗?js 不像 java,c 对内存的管控可以自己来操作,不需要就可以通过 free 就释放即可。何时分配,何时销毁内存都是由代码来控制的。如果创建了内存,而没有进行 free 回收。这种情况就被称为内存泄露。js 中如何回收js 的数据的存放是存储在栈和堆两种内存空间的。 自然,也就分为栈中的垃圾回收和堆中的垃圾回收。栈中垃圾回收function foo() { var name = '小明'; function
原创
发布博客 2022.05.18 ·
236 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

从V8来看数组动态扩容以及对数组的优化

V8对数组的优化在 c++、java 中的数组的特点是:是通过在内存中划分一串连续的、固定长度的空间。来存放一组有限的并且是相同类型的数据结构。js中的数组var arr = [100, 12.3, 'a', function () {return 1}, {a: 1}];arr[arr.length] = '12334';arr.length = 1;js 中的数组可以存放任意的类型。 可以动态的来给数组修改长度。支持任意的类型。js数组可以动态的的改变容量,根据数组的数据来扩容、
原创
发布博客 2022.05.18 ·
621 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

利用栈来解决博客目录生成

在开发博客项目中,需要使用 markdown 生成了对应的文章,生成文章之后提取出来 h1 和 h2 标签来组成对应的目录结构。示例 1:输入: ['H1', 'H1', 'H2', 'H2', 'H2', 'H1', 'H2']输出: [{tag: 'h1', children: [{}, {}, {}]}, {tag: 'h1', children: []}] 解题思路:使用栈结构,stack 来进行存放 h1 标签。 使用另一个栈 o_stack 来保存当前所处的 h1 标签
原创
发布博客 2022.05.15 ·
158 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

vue源码--$set/$delete

$set用法set 是全局 Vue.set 的别名。set(target, propertyName/index, value)作用Vue 中对于对象新增的属性或者是数组新增的下标都是不能够监听到的,为了保障新的属性同样是响应式的,且触发视图更新,需要借助 this.$set 来新增属性。对象不能是 Vue 实例或者是 Vue 实例的根数据对象。原理// src/core/observer/index.jsfunction set (target: Array<any> |
原创
发布博客 2022.04.25 ·
243 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Vue源码---$nextTick

$nextTickvm.$nextTick(callback)用法在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后使用它,然后等待 DOM 更新。2.1.0 ,如果没有提供回调且在支持 promise 的环境中,则返回一个 promise。原理Vue 在更新 DOM 时是异步执行的。只要侦听到数据变化,Vue 会开启一个事件队列,并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发,只会被推入到事件循环队列中一次。在缓冲时去除重复数据对于避免不必要的计算和
原创
发布博客 2022.04.24 ·
630 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Vue 模版编译

模版编译如何识别用户自己定义的模版,也就是 标签中类似于原生 HTML,还会有一些变量插值,或一些 Vue 指令,如 v-on、v-if 等。这些不属于元素的语法,归功于 Vue 的模版编译。把原生 HTML 提取出来,把非原生 HTML 找出来,经过一系列的逻辑处理生成渲染函数,也就是 render 函数。抽象语法树 AST如何将 template 中的一堆字符串解析为元素标签、属性、变量。需要借助抽象语法树.模版解析阶段:使用正则的方式解析成抽象语法树 AST。优化阶段:遍历 AS
原创
发布博客 2022.04.23 ·
1380 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

vue--虚拟DOM

虚拟 DOM虚拟DOM是什么?虚拟 DOM 就是用一个 JS 对象来描述一个 DOM 节点。<div class="a" id="b">我是内容</div>{ tag: 'div', attrs: { class: 'a', id: 'b' }, text: '我是内容', children: []}Vue为什么采用虚拟DOM,而不直接操作真实DOM呢?Vue是数据驱动视图,数据发生变化视图就
原创
发布博客 2022.04.22 ·
445 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Vue响应式原理

响应式原理口述Vue 的响应式是通过 Object.defineProperty 进行数据劫持 + 发布订阅模式 进行依赖收集及更新实现响应式。通过递归的形式将 data 数据(函数/对象)将数据变为可监测的,在 new Vue 初始化 Vue 实例的时候,通过创建一个 Watcher 实例(依赖),进行解析模版中(template)用到的数据,会触发 getter ,每一个对象里面都通过闭包的形式保存一个 Dep 实例(依赖收集者), Dep 会去收集全局的 Watcher 实例,这样就可以在数据改
原创
发布博客 2022.04.21 ·
1417 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

继承的方式

继承的方式原型链继承function Person() { this.data = [1, 2, 3];}function Teacher() {}Teacher.__proto__ = Person.prototype;var teacher = new Teacher();teacher.data; // [1, 2, 3];问题:对于引用类型的将会共享。改变之后会引用到父的数据。不能够给父构造函数传值。构造函数继承function Person(d
原创
发布博客 2022.03.10 ·
267 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

创建对象的方法

创建对象的方法1. 通过 Object 构造器var obj = new Object();obj.name = 'xxx'obj...问题:需要写大量的重复代码2. 字面量创建var obj = {};obj.name = 'xxx';问题:需要写大量的重复代码3. 工厂模式function createObj(name, age) { var obj = new Object(); obj.name = name; obj.age = age;
原创
发布博客 2022.03.10 ·
179 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

js 事件委托

事件委托定义何为事件委托,事件委托就是我们可以把本身应该在自己身上的事件触发,委托给别的元素上,让它来代替事件触发。原理主要是通过事件冒泡的特性,触发点击事件之后,PC 端的点击事件是由 300 毫秒的延迟的,当前元素触发之后,会一直向上冒泡,直到 document 才会停止冒泡。注意:任意一层阻止冒泡将会停止。好处当我们有大量的子元素,我们为了点击它,需要在它的身上都加上一个点击事件,知道个数还好,假如我们不知道个数,想绑定事件都没法绑定。所以我们需要借助它的父亲来实现点击事件。只需要指定
原创
发布博客 2022.03.09 ·
175 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

instanceof

instanceof定义obj instanceof Constructor; 我们用 instanceof 来检测 Constructor.prototype 是否存在于参数 obj 的原型链上。使用function Person() {};var person1 = new Person();person1 instanceof Person; // true;person1 instanceof Object; // true我们可以看到 person1 同时还属于 Object 类
原创
发布博客 2022.03.09 ·
117 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

toString

toStringtoString 可以用来判断数据类型. 可以把它看作是 typeof 的加强版,因为它不仅可以检测原始类型,还可以区分 object。[[Class]]我们需要先来说一下 [[Class]] 这个内部属性(只要是 [[]] 都是 js的内部属性,是不能够直接访问的),你不要认为它是与类有关系的内部属性,你可以把它看作是一种分类的方法。我们可以间接地通过在这个值上借用默认的 Object.prototype.toString() 来调用展示。Object.prototype.toSt
原创
发布博客 2022.03.09 ·
249 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

ie最小高度

ie最小高度chrome 下最小字体为 16px,而 ie 下最小高度为 12px如果设置一个盒子的话,设置盒子的高度,ie 下最小高度为 19px;我们想要设置更小的高度的话,需要给盒子的父盒子设置 font-size: 0;即时可以设置宽度, ie 下也设置不了 0px。...
原创
发布博客 2022.03.08 ·
119 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

移动端禁止默认行为

全面禁止默认行为在移动端上,文字默认会被选中,会使用浏览器默认的滚动条,有默认的右键菜单。那么怎么才能禁止呢?禁止方式document.addEventListener('touchstart', function (ev ) { ev = ev || event; ev.preventDefault();})这样子就可以了,那么怎么才能知道是否可以阻止默认事件?ev.cancelable;那么我们阻止了默认行为,怎么才能单独的使用?如果我们不想在 document
原创
发布博客 2022.03.08 ·
515 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

实现1物理像素

实现1物理像素我们写的1css像素都会跨越好几个物理像素,并且显示出来是按1像素的。那我们怎么实现1物理像素。(淘宝实现)通过缩放(function () { var dpr = window.devicePixelRatio || 1; const styleNode = document.createElement('style'); let size = document.documentElement.clientWidth * dpr / 16; styleN
原创
发布博客 2022.03.08 ·
183 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多