- 博客(205)
- 问答 (2)
- 收藏
- 关注
原创 读《你不知道的JavaScript》之再次认识“类“
Car类继Vehicle类, 内有drive方法,在Car类再写drive方法,方法内部使用inherit drive()代码片段以调用vehicle的drive方法,这是在子类中重写父类的同名方法(自然,你可以选择重写不同名方法,但多态存在是为了在需要时能自动调用合适的对象中的方法,这样的不同名多态结构在调用时或许会有些混乱),这种技术被称为多态/虚拟多态.它的存在只为描述: 我需要一个怎样的实例,里面有哪些数据,有做甚麽的方法,它是对未来实例的规划, 是一种蓝图.
2025-03-31 22:25:52
163
原创 读《你不知道的JavaScript》之对象的内容
"[[Get]]“是一种操作,对象默认内置”[[Get]]“操作,首先在对象中查找该属性的值,找到返回,找不到则查找原型链.访问属性会实现”[[Get]]"操作.“在引擎内部,存储在对象容器内部的是这些属性的名称,它们就像指针(技术角度来讲叫引用)一样,指向这些值真正的存储位置.”你肯定也遇到过对象引用导致的错误,你在后面的代码修改了对象属性值,结果前面代码呈现的属性值也变了,就是因为这个.如果属性访问返回的是一个函数,那它也并不是一个"方法."只是把一个对函数的引用作为了一个属性的值.
2025-03-29 17:03:02
371
原创 读《你不知道的JavaScript》之再次探讨何为对象
null被当作对象类型是语言本身的bug, type of null为object,这是由于对象在底层表示为二进制,在JavaScript二进制前3位都为0会被判断为object类型,null全部的位都是0,所以被判Object.用字面量创建number,string之类时,不使用专用于创建该类型的构造函数构造,所以得到的值不具备该类型本该有的方法仅是一个字面意义上的值,它并没有这个类型真正该具备的东西.简单基本类型(null/undefined除外)用字面量方便的声明,并在需要的时候自动转为对象.
2025-03-23 15:26:21
433
原创 [JavaScript]读《你不知道的JavaScript》之this
我只截取了一些我觉得有必要再看的部分,老生常谈的知识我没有放上来.调用栈:为了到达当前位置所调用的所有函数.调用位置: 当前执行的函数的前一个调用.如何调试:在某函数第一行打断点或在首行代码前加保留词"debugger;"运行时,调试器会在此处暂停并显现当前调用栈. this的默认绑定取决于函数调用位置.在setTimeout等回调时会出现丢失this绑定的情况.但是在ES5后出现了bind,bind在做什么?
2025-03-22 23:28:24
239
原创 [JavaScript]如何利用作用域块避免闭包内存泄漏?
如此,使用显式创建的作用域块将需要回收的部分包裹,但注意不要将闭包函数需要使用的结构包裹进去,回收后会导致闭包函数无法正常工作…以上把闭包需要的data1留下,其他的哪怕是用于生产data1的结构都可以放到子作用域块回收.click会被回调在其他位置, 在addEventListener函数内作为闭包函数.但其原作用域为全局,其会保留对原作用域的引用, 故全局作用域一直存活.出自《你不知道的JavaScript》上卷。注意要用let和const.
2025-03-19 21:42:00
237
原创 JavaScript 最佳实践
访问当前作用域外部变量所需时间随作用域链中作用域数量增加而呈现线性增长,由起始作用域到某个外层用域之间的作用域越多,需查找的时间越长.最大的作用域document则需遍历作用域链,用时最多.通过在局部作用域中保存对外部变量的引用,则仅创建引用时有一次较广的查找效率O(n),此后使用该引用效率为O(1);能在一个循环里做的就不要拆成好几个,有时为了代码结构可能会拆,这会导致O(n)增多(比如arr.length增多了)尽可能使用原生方法,作为一门解释型语言,由C/C++构建,原生绝对比自己用js搭的东西快.
2025-02-22 16:09:26
294
原创 [JavaScript] 如何实现不同体系内对象的交流
两个祖先对象中的子对象需要交流,那么应该在同时包含了这两个祖先对象的对象中建立方法,子对象的父级够不到另一个子对象就到子对象的祖父级,再够不到就再往上找,直到有一个级别同时容纳了两个子对象的祖先,就在这个级别里写方法使两个祖先建立联系,两个祖先商量出各自要做的事,再在各自体内一层一层调方法传达下去,直到到达目标对象,各自做事的过程最好是逐级进行,在目标子对象的每一个祖先里都有方法,这件事情经过它的每一个祖先最后抵达它的位置.就是两个对象分属于两个不同的大对象,埋的也很深,该怎么让他们交流.
2024-12-21 18:53:29
245
原创 【杂谈】类与构造函数、代码结构与面相对象
这或许会对新人有用,少走些弯路.就是一些心得吧,自己的理解,刚好大部分都想起来就写下来了.不那么标准也不绝对正确,可以参考一些.
2024-11-16 16:11:08
918
原创 canvas clearRect后依然被fill填充
拿出来单独测试,在上下文中将绘制的矩形使用clearRect掩藏后,调用fill方法依然会把掩藏的矩形填充出来显示,事实上fill和stroke都会把你之前在上下文里绘制的所有能填充的东西都重新填充出来显示.以前画的东西擦掉在新的位置绘制,会把擦掉的东西也显示出来,测试了一下没有数据绑定,也不是因为定时器.一调用绘制方法就会出问题,数据改掉不绘制都不会有事,最后发现问题在绘制方法里的fill.我最后用fillRect来绘制,放弃使用fill和stroke,没有再出现这个问题了.
2024-11-16 13:03:05
176
原创 JavaScript 赛博八音盒调制《ENDER LILIES-Harmonious》
js内有几个空格用了中文,自行替换.这部分有些空格错误,但数据是对的.
2024-10-26 18:27:15
290
原创 JavaScript 了解专用工作者线程
专用工作者线程内部,全局作用域是类DedicatedWorkerGlobalScope的实例, 其为WorkerGlobalScope的后代,所以也包含其父类工作者线程共有的属性和方法.所有计算函数体内在工作线完成,不影响父上下文性能.但发送到工作者线程执行的函数体内不能存在在工作者线程内获取不到的值如window, 这是一个作用域问题.工作者线程并非只能在另一个js文件中创建,在行内创建工作者线程也可行,核心是利用Blob和URL生成对象URL作为Worker的参数.下篇会是专用工作者线程使用相关.
2024-10-19 15:46:01
609
原创 JavaScript 工作者线程基础
创建工作者线程来处理繁杂的计算,网络请求或其他花费时间的工作,避免阻滞页面加载.但需要注意创建工作者线程也是一个花费较大的行为,去除“成本”能够得到多少收益需要自行斟酌.
2024-10-19 12:12:00
516
原创 JavaScript ArrayBuffer视图:定型数组
定型数组的of方法基于arguments多个数字类型参数创建对应格式的定型数组,比如以上创建内部包含3.14, 2.718, 1.618三个元素的Float32Array.这个方法所做的事即将原数组两个下标中间的部分切出并构建相同格式的定型数组后返回,但只是copy出来,不改变原数组.Ints4为Int16Array(4)[2, 4, 6, 8]相当于用原生数组创建,不存在转换进制格式的问题.定型数组的from方法基于传入的原生数组创建定型数组,这与在实例化定型数组时传入数组的结果相同.
2024-10-13 15:03:00
731
原创 JavaScript ArrayBuffer的读写与类型转换
所有视图的基本单位是ArrayBuffer, ArrayBuffer中只存储二进制格式的数据.ArrayBuffer不可直接读写, 必须通过视图(比如DataView)暴露的API.
2024-10-01 18:51:18
728
原创 JavaScript 用requestAnimationFrame与定时器做节流
requestAnimationFrame每次调用都把其参数函数推入重绘回调的函数队列.在两次重绘间多次调用同一个更新页面视觉效果的函数, 只有最后且最新一次的结果会被绘制,之前调用结果都被覆盖,浪费性能.
2024-09-27 23:40:22
465
原创 JavaScript 从事件处理入手的优化
除了事件委托外另一个从事件处理优化的途径即及时清理挂载的事件处理程序.事件委托通过限制了浏览器代码与JavaScript之间建立的联系数量以优化性能,那么及时切断这种联系也可达到相同目的.
2024-09-27 21:47:46
484
原创 JavaScript 构造函数、原型和原型链
构造函数产生对象.我们说原型对象原型对象,prototype的值必是对象类型(Javascript里各种类型都可以说是对象,要指名是对象的时候就说对象类型).通过new一个构造函数的方式创建对象,对象的原型prototype与构造函数的prototype相同,对象的构造函数constructor为该构造函数.Mozilla实现的Javascript暴露了属性用于直接读写对象的原型,不推荐使用,因为并非所有浏览器都实现.
2024-09-21 18:53:27
579
原创 javascript 关于监听鼠标按键的补充
【JavaScript 监听鼠标左右同时按下/同时按下移动 - 优快云 App】http://t.csdnimg.cn/f2BpN。在DOM规定下,click事件上有button属性,这个属性有三个可用值1、2、3分别对应左中右三个鼠标键按下.“很显然,DOM定义的button属性比IE这一套更简单也更有用,毕竟同时按多个鼠标按键的情况很少见.”现在要监听鼠标多键同时按下/释放似乎不得不使用一些复杂类型去存储状态,而以前事情并不这样麻烦.这真的有让事情变得更简单更有用吗?
2024-09-21 11:40:29
596
原创 Javascript 如何利用对象池避免频繁的垃圾回收?
最近挤不出时间写,看到有用的东西找机会整理上来吧.几个月没上线,平台把文章都加上vip了,昨天解了好多,会继续解完.
2024-09-08 18:28:17
764
原创 构造函数内的方法 写在函数体与写在原型上的区别
以前没注意过, 去创建一个构造函数的时候, 方法都是直接写在函数内的. 在构造函数需要多次实例化的情况下有缺点, 不过幸好以前项目里的构造函数也不需要多次实例化, 缺点没有生效.
2023-08-22 18:37:31
940
原创 Vue3组合式API+TypeScript写法入门
参考Vue3官网.本篇以组合式API为例, 但不包含setup语法糖式写法.原本打算结合class-component, Vue3不推荐就不用了:而且是不再推荐基于类的组件写法, 推荐单文件组件, 组合式 API和setup语法糖.
2023-07-21 15:32:34
772
1
原创 An arithmetic operand must be of type ‘any‘, ‘number‘, ‘bigint‘ or an enum type.
尝试对reactive内一Number类型变量执行++时标红.
2023-07-18 16:01:17
785
原创 Vue3 TS props传参报错TS2722: Cannot invoke an object which is possibly ‘undefined‘.
子组件props接受父组件传来的函数, 调用时报错该值可能为undefined.
2023-07-15 17:34:50
1666
原创 Three报错 ‘get‘ on proxy: property ‘modelViewMatrix‘ is a read-only and non-configurable data property
Vue3+Three.js的项目, 使用setup语法糖出现报错.
2023-06-13 16:07:50
2333
3
原创 HTML文档引入JS模块出现路径问题
JS抽离, 引入three模块.LiveServer报错:```Uncaught TypeError: Failed to resolve module specifier "three".Relative references must start with either "/", "./", or "../".
2023-06-12 11:41:40
8266
1
原创 JavaScript for与forEach结束本轮循环/结束循环
我以前一直想尝试一下这个for里嵌switch来着, 找不到合适的机会, 今天写node脚本刚好遇到, 必须狠狠的尝试一下.
2023-05-25 02:02:06
2111
原创 解决 Uncaught TypeError: SpriteCanvasMaterial is not a constructor.
上周买了本《Three.js开发指南》, 第三版, 里面的语法不太跟趟, 有点旧, 倒也不能全怪作者, three迭代的确很快.
2023-05-18 20:50:53
1046
原创 JavaScript 基于MutationObserver实现拖拽防抖
2D标注系统, 需要在标注添加后自动为其生成一个标签, 而因为标注画板可缩放, 所以需要更新标签位置.但这其中涉及到DOM操作, 我不想在拖拽的时候疯狂的获取DOM.
2023-04-16 02:49:42
610
原创 git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks push -v --tags origin
好多天没交代码了, 今天用SourceTree提交突然报了这个错误.
2023-04-13 09:52:32
17325
原创 D3.js 获取DOM元素值
最近在用D3做数据标注系统的2D标注部分, 需要给每个2D标注绑定id, 那么用下拉框形式展示所有id, 但是选取的时候出了些问题.下拉框仅为例, 不代表其他DOM元素不可用.
2023-04-12 11:11:21
657
空空如也
原生js转vue中的事件触发问题
2023-02-13
JavaScript 关于深拷贝问题
2023-01-12
在computed里写element表单校验规则
2022-08-14
小程序 请求满足条件的接口
2022-06-20
el-upload无法获取fileList
2022-04-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人