
js
文章平均质量分 80
TE-茶叶蛋
全干工程师,阿里云专家博主
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JavaScript 中的五种继承方式进行深入对比
本文详细对比了JavaScript中的五种继承方式:原型链继承、构造函数继承、组合继承、寄生组合继承以及ES6的class extends继承。每种方式的核心原理、示例代码、优缺点及应用场景均进行了深入分析。原型链继承通过子类原型指向父类实例实现继承,简单但存在引用属性共享问题;构造函数继承通过在子类构造函数内调用父类构造函数实现属性继承,但无法继承方法;组合继承结合了前两种方式的优点,既继承属性又继承方法;寄生组合继承进一步优化组合继承,减少父类构造函数调用次数;ES6的class extends继承语法原创 2025-05-19 23:34:49 · 1540 阅读 · 0 评论 -
JavaScript 的编译与执行原理
本文深入探讨了 JavaScript 的编译与执行过程,重点解析了词法分析、语法分析、语义分析等编译阶段,以及执行上下文、作用域、作用域链和闭包等核心概念。文章指出,JavaScript 虽然是解释型语言,但在执行前仍会经历编译阶段,生成抽象语法树(AST)并创建执行上下文。通过词法环境和变量环境,JavaScript 实现了作用域链的构建,而闭包则是函数与其定义时词法环境的组合,能够“记住”外部变量。文章还通过示例代码展示了 var 和 let 在循环中的作用域差异,并强调了理解这些概念对编写和调试 Ja原创 2025-05-17 14:45:45 · 1095 阅读 · 0 评论 -
类语法糖与现代响应式框架的适应性分析
(本质是一个函数),内部使用其他 Hooks 实现所需功能,然后在任意组件中调用这个 Hook 就能复用其逻辑,无需改变组件层次结构 (原创 2025-04-10 11:58:43 · 1529 阅读 · 0 评论 -
跨浏览器 Tab 通信工具-emit/on 风格 API(仿 mitt)
封装一个前端跨浏览器 Tab 通信工具。原创 2025-04-08 18:31:36 · 544 阅读 · 0 评论 -
写好代码-避免嵌套三元运算符
✅嵌套三元运算符适合极简单场景(2 个分支以内)。✅if/else 更适合复杂判断链,能带来更清晰的逻辑结构。✅ 如果判断逻辑属于业务核心,建议封装成函数,便于维护和单元测试。原创 2025-04-08 10:16:44 · 234 阅读 · 0 评论 -
一步一步教你用 Pdf.js 把 PDF 变成 PNG 图像
Pdf.js 就像是一个 PDF 阅读器,但它不需要你安装任何插件,只要有浏览器就可以直接运行。它是 Mozilla(也就是 Firefox 浏览器的作者)开源的一个项目,目的是让开发者能够在网页上方便地展示 PDF 文件。而且,Pdf.js 还能将 PDF 文件的每一页渲染成图像,今天我们要做的就是把 PDF 转成 PNG 格式的图片,操作起来简单方便。是 JavaScript 中的一种类型化数组(TypedArray),专门用于存储和操作 8 位无符号整数的数组。原创 2024-12-03 18:30:32 · 2595 阅读 · 0 评论 -
JavaScript-Object
在 JavaScript 中,Object是一个非常重要的全局对象,它提供了许多方法来处理对象。以下是Object。原创 2024-08-12 18:34:03 · 1256 阅读 · 0 评论 -
JS-在字符串形式的正则表达式中,需要对反斜杠进行转义
在字符串形式的正则表达式中,需要对反斜杠进行转义!!!,最近用AI帮我转换代码,后端伙伴已经用C#的正则方法。结果被坑了一波。下面娓娓道来。简而言之,在字符串中,单个反斜杠是转义字符,所以需要再加一个来表示字面意义上的反斜杠。这样,正则表达式引擎才能正确解析你的模式字符串。而C# 用的@ 不用转义。原创 2024-04-30 18:28:48 · 1411 阅读 · 1 评论 -
vue3项目:Error: Cannot find module ‘node:url‘
今天下载一个项目是vue3+ts+vite 的。我的电脑是mac ,之前也成功运行过vue3与vue2的项目。今天却报错了,这里记录下📝。记录下vue3+ts 环境报错处理问题。原创 2024-03-12 21:49:10 · 1965 阅读 · 0 评论 -
Uniapp小程序开发-底部tabbar的开发思路
记录uniapp 开发小程序的底部tabbar ,这里讨论的不是自定义tabbar的情况。而是使用wx.setTabBarItem(Object object) 这个api的情况。关于custom 小程序底部tabbar的可以跳过。今天的内容就在这里了,本文讨论如何使用uniapp实现基本tabbar功能,接着给出动态设置icon的思路。依赖的api是uni.setTabBarItem。原创 2024-02-24 13:36:39 · 2431 阅读 · 0 评论 -
Lodop-批量逐个打印返回状态
前面写过Lodop的相关文章 :《Lodop打印控件常用指令记录》《Vue3+hooks快速接入Lodop打印插件》今天版本迭代,之前打印状态判断依据是否推送到打印队列来判断是否成功,这次要优化下以上就是今天的内容了。主要介绍了使用Lodop 打印插件,在循环打印的时候实现串行打印,并且获取打印结果(首先获取job,接着判断是否在打印队列中来判断是否打印成功)。原创 2024-01-19 18:25:45 · 2835 阅读 · 0 评论 -
JavaScript深浅拷贝的几种方式
深浅拷贝主要是针对于引用类型而言的以上就是今天的内容了,JavaScript深浅拷贝的几种方式。原创 2024-01-18 18:22:56 · 692 阅读 · 0 评论 -
Base64编码原理解析
今天的内容,简单介绍什么是base64编码以及它编码的原理。接着举例了前端使用base64编码/解码的方式。原创 2024-01-17 23:17:33 · 1921 阅读 · 0 评论 -
JavaScript-sort()排序
sort()方法,可以对数组进行排序。该方法默认按照字符串的Unicode编码进行排序,也可以用自定义函数指定排序规则。(可选):用于指定排序规则的函数。如果省略,则按照Unicode编码进行排序。如果要按照其他规则排序,可以使用自定义函数。自定义函数接收两个参数,分别是要比较的两个元素。根据两个元素的比较结果,返回负数、零或正数,表示两个元素的相对顺序。});此例中的自定义排序函数采用a - b的方式对数组进行升序排序,可以使用b - a进行降序排序。需要注意的是,sort()原创 2024-01-17 18:31:29 · 15278 阅读 · 0 评论 -
前端面试必备js知识
它可以用于引用该函数的函数体内当前正在执行的函数。这在函数的名称是未知时很有用,例如在没有名称的函数表达式 (也称为“匿名函数”)内。如我们的实现代码来看,实现中有用到 构造函数,而箭头函数没有构造函数,所以…早期版本的 JavaScript不允许使用命名函数表达式,出于这样的原因, 你不能创建一个递归函数表达式;箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。,相反,如果一个函数是在另外一个函数作用域内被调用的,则。在普通的函数调用中,运算符被初始化的函数或构造方法中,原创 2023-12-15 16:11:21 · 404 阅读 · 0 评论 -
前端常用去重的几种方式
本文列举几种在前端开发几种去重的方式。原创 2023-12-15 15:02:11 · 1188 阅读 · 1 评论 -
搞懂Promise
今天看了好几位大牛的文章,整理和记录下对promise的认识。 方便大家一起学习~ What? (promise的大概是个什么东西,我们从几个角度来认识下)Promise是异步编程的一种解决方案,它有三种状态,分别是pending-进行中、resolved-已完成、rejected-已失败当Promise的状态又pending转变为resolved或rejected时,(...原创 2018-08-28 23:30:29 · 307 阅读 · 0 评论 -
读《高性能 JavaScript》笔记 -”JS进阶必读“(第一章)
一, 加载和执行 1.0脚本位置,由于 javaScript的阻塞特性,脚本位置可以放在<body>标签底部 ,以尽量减少整个页面下载的影响。<html> <head> <title>下载的js文件 尽可能放在body标签底部</title> <body> <p>原创 2018-09-13 12:03:01 · 233 阅读 · 0 评论 -
{} == {},[]==[] 结果为什么是false?
var a = function() {console.log(11)};var b = function() {console.log(11)};console.log( a==b ); //falseconsole.log( {}=={} ); //falseconsole.log( []==[] ); //false 如你所见,上述三个例子结果都...转载 2018-09-13 16:39:26 · 4328 阅读 · 0 评论 -
去除html标签方法
getSimpleText(str) { let reg1 = new RegExp('<.+?>', 'g') // 匹配html标签的正则表达式,"g"是搜索匹配多个符合的内容 let reg2 = new RegExp('\\r', 'g') let reg3 = new RegExp('\\n', 'g...原创 2018-11-16 16:20:08 · 395 阅读 · 0 评论 -
正方项目—— summary
目的:记录做过的项目,还有一些学到的新知识。 项目背景:某公司有很多停车场和充电柱。共享汽车也有合作进来充电和停车,想提高缴费和进入场的效率。 项目介绍:微信公众号H5项目,主要功能提供线上支付(微信 支付宝),无感支付服务,附近停车场定位。其中无感支付,需要在自己开通自动缴费协议。 技术栈:vue....原创 2018-11-29 15:52:39 · 360 阅读 · 0 评论 -
event loop async await 事件循环机制 ---学习笔记
首先由一个小题目导入~~~~原创 2018-12-17 12:09:06 · 1041 阅读 · 0 评论 -
new bind apply call instanceof 等笔记
call和apply的用途Function.prototype.call 和 Function.prototype.apply 都是非常常用的方法。它们的作用一模一样,区别仅在于传入参数形式的不同方法 apply call 第一个参数 函数体内 this 对象的指向 函数体内 this 对象的指向 第二个参数 带下标的集合 从第二个参数开始,每个...原创 2019-01-08 15:28:53 · 299 阅读 · 0 评论 -
git 常用指令操作
记录一些git 平时常用的git add . git commit "提交信息" git push 然后 git status 或git pull 查看是否提交成功。这3步,把所有本地修改的提交上去。git status 查看当前的状态,有多少没有提交的,哪些文件有修改或新增,都可以看到。建议操作git 指令之前,先走一下这个 git status 指令。...原创 2019-02-11 14:28:00 · 342 阅读 · 0 评论 -
基于FlashWavRecorder实现IE11浏览器录音后用科大讯飞转文字
终于折腾好了(使用FlashWavRecorder实现IE11浏览器录音后用科大讯飞转文字,我的是Vue.js项目),对一个前端仔来说,听到要兼容IE,都是不情愿的,但是需求来了,那就折腾起来吧。(主要这需求砍不了,菜刀没带)。但是经过这几天折腾,记录一下,不足之处,还望指教~ 首先呢,明确下我们的目标,支持IE11浏览器录音后转文字。我们用逆向思维思考下,音频转文字...原创 2019-03-12 16:28:09 · 2031 阅读 · 8 评论 -
如何使用swfobject(中文版)
是否需要在ie上实现录音 才来搜索的???如果是这里有demo:IE上实现录音后转文字1.SWFObject是什么?SWFObject 2提供两种优化flash播放器的嵌入方法:基于标记的方法和依赖于js的方法。 SWFObject 2提供一个js的API,为嵌入SWF文件和获取Flash播放器的相关信息提供了一个完整的工具箱。 只用了一个很小的js文件 (10Kb / GZIPed:...转载 2019-03-09 22:15:58 · 799 阅读 · 0 评论 -
arguments.callee 在严格模式的替代思路
argument代表当前函数的参数数组 arguments.callee表示引用当前正在执行的函数,或者说是调用arguments.callee的函数对象的引用,它给匿名函数提供了一种自我引用的方式。通过如下例子,可以更好的理解概念。 var func = function() {alert(func === arguments.callee);}fu...转载 2019-03-12 16:23:10 · 1323 阅读 · 0 评论 -
防抖方法&&节流函数源码
/** * * @param fn {Function} 实际要执行的函数 * @param delay {Number} 延迟时间,也就是阈值,单位是毫秒(ms) * * @return {Function} 返回一个“去弹跳”了的函数 */function debounce(fn, delay = 500) { // 定时器,用来 setTimeout ...原创 2019-03-19 11:51:59 · 306 阅读 · 0 评论 -
vue-fliters (时间格式化)
vue-fliters 记录下时间戳格式化,直接贴码步骤1: import dataFliter from "@xxxxx.data.js"步骤2:export default {data() { return {}; },filters: {//记得加在这里 dataFliter},};步骤3.使用 eg : ...原创 2018-07-19 14:40:03 · 574 阅读 · 0 评论