
JavaScript
文章平均质量分 72
....
白瑕
20241013谢谢你来看我的文章.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[JavaScript]对象关联风格与行为委托模式
[[prototype)]的机制就是存在于对象中的一个内部链接,它会引用其它对象”原创 2025-04-28 23:31:12 · 752 阅读 · 0 评论 -
读《你不知道的JavaScript》之再次探讨原型、类与构造函数
我只截取了一些我认为有用的"至理名言"记下来.加双引号的为书中原话.这是老生常谈的话题了啊,我在我的博客里不止3次探讨它们3个的关系,每一次都是认知上的迭代.“JavaScript中的对象有一个特殊的[[Prototype]]内置属性,其实就是对其他对象的引用.”“当你试图引用对象的属性时会触发[[Get]]操作,操作第一步是检查对象自身是否有该属性.”“但如果该属性不在对象中,就需要使用对象的[[prototype]]链.”原创 2025-04-05 20:06:59 · 941 阅读 · 0 评论 -
读《你不知道的JavaScript》之再次认识“类“
Car类继Vehicle类, 内有drive方法,在Car类再写drive方法,方法内部使用inherit drive()代码片段以调用vehicle的drive方法,这是在子类中重写父类的同名方法(自然,你可以选择重写不同名方法,但多态存在是为了在需要时能自动调用合适的对象中的方法,这样的不同名多态结构在调用时或许会有些混乱),这种技术被称为多态/虚拟多态.它的存在只为描述: 我需要一个怎样的实例,里面有哪些数据,有做甚麽的方法,它是对未来实例的规划, 是一种蓝图.原创 2025-03-31 22:25:52 · 202 阅读 · 0 评论 -
读《你不知道的JavaScript》之对象的内容
"[[Get]]“是一种操作,对象默认内置”[[Get]]“操作,首先在对象中查找该属性的值,找到返回,找不到则查找原型链.访问属性会实现”[[Get]]"操作.“在引擎内部,存储在对象容器内部的是这些属性的名称,它们就像指针(技术角度来讲叫引用)一样,指向这些值真正的存储位置.”你肯定也遇到过对象引用导致的错误,你在后面的代码修改了对象属性值,结果前面代码呈现的属性值也变了,就是因为这个.如果属性访问返回的是一个函数,那它也并不是一个"方法."只是把一个对函数的引用作为了一个属性的值.原创 2025-03-29 17:03:02 · 395 阅读 · 0 评论 -
读《你不知道的JavaScript》之再次探讨何为对象
null被当作对象类型是语言本身的bug, type of null为object,这是由于对象在底层表示为二进制,在JavaScript二进制前3位都为0会被判断为object类型,null全部的位都是0,所以被判Object.用字面量创建number,string之类时,不使用专用于创建该类型的构造函数构造,所以得到的值不具备该类型本该有的方法仅是一个字面意义上的值,它并没有这个类型真正该具备的东西.简单基本类型(null/undefined除外)用字面量方便的声明,并在需要的时候自动转为对象.原创 2025-03-23 15:26:21 · 465 阅读 · 0 评论 -
[JavaScript]读《你不知道的JavaScript》之this
我只截取了一些我觉得有必要再看的部分,老生常谈的知识我没有放上来.调用栈:为了到达当前位置所调用的所有函数.调用位置: 当前执行的函数的前一个调用.如何调试:在某函数第一行打断点或在首行代码前加保留词"debugger;"运行时,调试器会在此处暂停并显现当前调用栈. this的默认绑定取决于函数调用位置.在setTimeout等回调时会出现丢失this绑定的情况.但是在ES5后出现了bind,bind在做什么?原创 2025-03-22 23:28:24 · 259 阅读 · 0 评论 -
[JavaScript]读《你不知道的JavaScript》之作用域闭包
只摘了一些"至理名言",还有我觉得有用的东西.原创 2025-03-20 23:05:23 · 318 阅读 · 0 评论 -
[JavaScript] 读《你不知道的JavaScript》之作用域
我只挑了一些我觉得有用东西的出来,那些老生常谈的内容不过多叙述.原创 2025-03-19 22:54:01 · 532 阅读 · 0 评论 -
[JavaScript]如何利用作用域块避免闭包内存泄漏?
如此,使用显式创建的作用域块将需要回收的部分包裹,但注意不要将闭包函数需要使用的结构包裹进去,回收后会导致闭包函数无法正常工作…以上把闭包需要的data1留下,其他的哪怕是用于生产data1的结构都可以放到子作用域块回收.click会被回调在其他位置, 在addEventListener函数内作为闭包函数.但其原作用域为全局,其会保留对原作用域的引用, 故全局作用域一直存活.出自《你不知道的JavaScript》上卷。注意要用let和const.原创 2025-03-19 21:42:00 · 269 阅读 · 0 评论 -
JavaScript 最佳实践
访问当前作用域外部变量所需时间随作用域链中作用域数量增加而呈现线性增长,由起始作用域到某个外层用域之间的作用域越多,需查找的时间越长.最大的作用域document则需遍历作用域链,用时最多.通过在局部作用域中保存对外部变量的引用,则仅创建引用时有一次较广的查找效率O(n),此后使用该引用效率为O(1);能在一个循环里做的就不要拆成好几个,有时为了代码结构可能会拆,这会导致O(n)增多(比如arr.length增多了)尽可能使用原生方法,作为一门解释型语言,由C/C++构建,原生绝对比自己用js搭的东西快.原创 2025-02-22 16:09:26 · 335 阅读 · 0 评论 -
[JavaScript] 我该怎么去写一个canvas游戏
首先你得知道canvas的基础语法,此处不过多赘述.原创 2024-12-21 19:19:28 · 656 阅读 · 0 评论 -
[JavaScript] 如何实现不同体系内对象的交流
两个祖先对象中的子对象需要交流,那么应该在同时包含了这两个祖先对象的对象中建立方法,子对象的父级够不到另一个子对象就到子对象的祖父级,再够不到就再往上找,直到有一个级别同时容纳了两个子对象的祖先,就在这个级别里写方法使两个祖先建立联系,两个祖先商量出各自要做的事,再在各自体内一层一层调方法传达下去,直到到达目标对象,各自做事的过程最好是逐级进行,在目标子对象的每一个祖先里都有方法,这件事情经过它的每一个祖先最后抵达它的位置.就是两个对象分属于两个不同的大对象,埋的也很深,该怎么让他们交流.原创 2024-12-21 18:53:29 · 266 阅读 · 0 评论 -
【杂谈】类与构造函数、代码结构与面相对象
这或许会对新人有用,少走些弯路.就是一些心得吧,自己的理解,刚好大部分都想起来就写下来了.不那么标准也不绝对正确,可以参考一些.原创 2024-11-16 16:11:08 · 937 阅读 · 0 评论 -
canvas clearRect后依然被fill填充
拿出来单独测试,在上下文中将绘制的矩形使用clearRect掩藏后,调用fill方法依然会把掩藏的矩形填充出来显示,事实上fill和stroke都会把你之前在上下文里绘制的所有能填充的东西都重新填充出来显示.以前画的东西擦掉在新的位置绘制,会把擦掉的东西也显示出来,测试了一下没有数据绑定,也不是因为定时器.一调用绘制方法就会出问题,数据改掉不绘制都不会有事,最后发现问题在绘制方法里的fill.我最后用fillRect来绘制,放弃使用fill和stroke,没有再出现这个问题了.原创 2024-11-16 13:03:05 · 202 阅读 · 0 评论 -
JavaScript 赛博八音盒调制《ENDER LILIES-Harmonious》
js内有几个空格用了中文,自行替换.这部分有些空格错误,但数据是对的.原创 2024-10-26 18:27:15 · 309 阅读 · 0 评论 -
JavaScript 了解专用工作者线程
专用工作者线程内部,全局作用域是类DedicatedWorkerGlobalScope的实例, 其为WorkerGlobalScope的后代,所以也包含其父类工作者线程共有的属性和方法.所有计算函数体内在工作线完成,不影响父上下文性能.但发送到工作者线程执行的函数体内不能存在在工作者线程内获取不到的值如window, 这是一个作用域问题.工作者线程并非只能在另一个js文件中创建,在行内创建工作者线程也可行,核心是利用Blob和URL生成对象URL作为Worker的参数.下篇会是专用工作者线程使用相关.原创 2024-10-19 15:46:01 · 638 阅读 · 0 评论 -
JavaScript 工作者线程基础
创建工作者线程来处理繁杂的计算,网络请求或其他花费时间的工作,避免阻滞页面加载.但需要注意创建工作者线程也是一个花费较大的行为,去除“成本”能够得到多少收益需要自行斟酌.原创 2024-10-19 12:12:00 · 560 阅读 · 0 评论 -
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 · 764 阅读 · 0 评论 -
JavaScript ArrayBuffer的读写与类型转换
所有视图的基本单位是ArrayBuffer, ArrayBuffer中只存储二进制格式的数据.ArrayBuffer不可直接读写, 必须通过视图(比如DataView)暴露的API.原创 2024-10-01 18:51:18 · 824 阅读 · 0 评论 -
JavaScript 用HTML5约束验证API做表单验证
表单元素对象上有该方法只返回布尔值以反映验证通过与否.原创 2024-09-28 16:51:18 · 630 阅读 · 0 评论 -
JavaScript 用requestAnimationFrame与定时器做节流
requestAnimationFrame每次调用都把其参数函数推入重绘回调的函数队列.在两次重绘间多次调用同一个更新页面视觉效果的函数, 只有最后且最新一次的结果会被绘制,之前调用结果都被覆盖,浪费性能.原创 2024-09-27 23:40:22 · 534 阅读 · 0 评论 -
JavaScript 从事件处理入手的优化
除了事件委托外另一个从事件处理优化的途径即及时清理挂载的事件处理程序.事件委托通过限制了浏览器代码与JavaScript之间建立的联系数量以优化性能,那么及时切断这种联系也可达到相同目的.原创 2024-09-27 21:47:46 · 506 阅读 · 0 评论 -
JavaScript 构造函数、原型和原型链
构造函数产生对象.我们说原型对象原型对象,prototype的值必是对象类型(Javascript里各种类型都可以说是对象,要指名是对象的时候就说对象类型).通过new一个构造函数的方式创建对象,对象的原型prototype与构造函数的prototype相同,对象的构造函数constructor为该构造函数.Mozilla实现的Javascript暴露了属性用于直接读写对象的原型,不推荐使用,因为并非所有浏览器都实现.原创 2024-09-21 18:53:27 · 596 阅读 · 0 评论 -
javascript 关于监听鼠标按键的补充
【JavaScript 监听鼠标左右同时按下/同时按下移动 - CSDN App】http://t.csdnimg.cn/f2BpN。在DOM规定下,click事件上有button属性,这个属性有三个可用值1、2、3分别对应左中右三个鼠标键按下.“很显然,DOM定义的button属性比IE这一套更简单也更有用,毕竟同时按多个鼠标按键的情况很少见.”现在要监听鼠标多键同时按下/释放似乎不得不使用一些复杂类型去存储状态,而以前事情并不这样麻烦.这真的有让事情变得更简单更有用吗?原创 2024-09-21 11:40:29 · 618 阅读 · 0 评论 -
JavaScript 如何阻止右键浏览器默认菜单?
阻止后你可以自定义鼠标右键事件处理方法,比如弹出你自定义的菜单.原创 2024-09-21 11:23:29 · 586 阅读 · 0 评论 -
JavaScript 如何判定用户输入文本的方式?
事件以获取其事件对象event,该事件的事件对象上有。原创 2024-09-21 10:59:13 · 333 阅读 · 0 评论 -
Promise查漏及回调地狱结构优化
依据《JavaScript高级程序设计》对Promise期约相关进行查缺补漏.原创 2024-09-15 18:26:50 · 636 阅读 · 0 评论 -
Javascript 如何利用对象池避免频繁的垃圾回收?
最近挤不出时间写,看到有用的东西找机会整理上来吧.几个月没上线,平台把文章都加上vip了,昨天解了好多,会继续解完.原创 2024-09-08 18:28:17 · 838 阅读 · 0 评论 -
构造函数内的方法 写在函数体与写在原型上的区别
以前没注意过, 去创建一个构造函数的时候, 方法都是直接写在函数内的. 在构造函数需要多次实例化的情况下有缺点, 不过幸好以前项目里的构造函数也不需要多次实例化, 缺点没有生效.原创 2023-08-22 18:37:31 · 963 阅读 · 0 评论 -
JavaScript for与forEach结束本轮循环/结束循环
我以前一直想尝试一下这个for里嵌switch来着, 找不到合适的机会, 今天写node脚本刚好遇到, 必须狠狠的尝试一下.原创 2023-05-25 02:02:06 · 2364 阅读 · 0 评论 -
JavaScript 监听鼠标左右同时按下/同时按下移动
基于原生JavaScript, 在使用three.js的raycaster模拟瞄准及射击时用到.原创 2023-04-06 14:21:16 · 1622 阅读 · 0 评论 -
给数据标注系统加个2D标注功能
在照片上进行2D数据标注, 对2D照片上的标注误差进行手动修正.原创 2023-03-18 01:52:17 · 1700 阅读 · 3 评论 -
JavaScript 代码不嵌套主义
看过不少过度嵌套的代码, 我真正意识到问题的严重性是刚入职那会, 我在一个老项目里看到了40个连续的else if, 套了6层的iffor和forEach, 因为我们并没有做什么限制代码嵌套的提前约定.呃, 那之后认识到会写代码和代码写得好完全是两种概念, 能够实现复杂的需求也并不能说明代码写得好, 开始注重代码结构方面.事实是, 很多时候需要编写的逻辑本身就很恶心, 乍看之下, 堆页岩般的判定嵌套里似乎每一层都是必要的, 也只能说尽量让它看起来不那么恶心.嗯, 比如少来几次Tab。原创 2023-02-18 16:20:22 · 860 阅读 · 0 评论 -
解决原生template标签在Vue中失效的问题
需要原生Javascript + three.js的数据标注平台加入Vue框架.本来挺顺利的, 我直接在mounted周期做了初始化, 然后剩下的操作还是交给JavaScript文件执行, 最后发现里面有很明显的事件触发问题.原创 2023-02-17 16:45:11 · 3359 阅读 · 0 评论 -
JavaScript 二叉树
同前面说到的散列表结构, 树也是一种非顺序数据结构, 对于存储需要快速查找的数据非常有用.我会先叙述一下何为树结构, 然后去实现一个基本功能完备的二叉树作为例子.本来应该叫’JavaScript 树’的, 但是我一直在说二叉树…整个篇幅基本给了二叉树, 然后索性就叫二叉树了.栈的话前一段时间做了个撤销恢复功能, 用双端队列改造了一下限制了步数.这种结构目前没想到要怎么去应用, 或许在使用一些库的时候能用到?原创 2023-02-13 20:54:31 · 518 阅读 · 0 评论 -
JavaScript 递归算法
第一次认识递归这个概念在两年前, 一个递归函数(不是深拷贝)看了好久才看懂, 在函数内部再次调用自己, 返回一个新的值, 再此期间还涉及多次对自己的调用, 这对于当时的我还是太过超前了.不过直到最近, 我对’递归’的认知也几乎只是这些, 我还是希望能有更深刻的理解.迭代比递归执行起来要快很多, 递归相较于迭代需要的代码更少且更易理解, 另外, 有了尾调用优化, 递归的多余消耗甚至可能被消除.原创 2023-02-04 17:14:31 · 2111 阅读 · 0 评论 -
ECMAScript2019 类私有域
呃, 被只读属性绊了一跤误打误撞去了解了它.我需要深拷贝一个对象, 但这个对象内有一个position不得不说这个""彻彻底底的误导了我, 让我觉得这是私有属性造成的(但其实只要用处理一下writable就好了.)但在我发现之前还是去研究了一下.原创 2023-02-01 00:49:43 · 870 阅读 · 0 评论 -
JavaScript WeakMap
我在处理一个复杂对象的深拷贝方法时接触到WeakMap, 其作为缓存结构以解决对象内部的循环引用问题. 为了改造这个方法, 决定研究WeakMap。原创 2023-01-24 02:37:20 · 1842 阅读 · 0 评论 -
JavaScript 如何正确的分析报错信息
JavaScript 如何根据报错信息快速锁定错误位置.原创 2023-01-14 15:02:23 · 3081 阅读 · 0 评论 -
JavaScript 基于栈和命令模式的撤销恢复操作
JavaScript基于栈和命令模式完成操作的撤销与恢复.原创 2023-01-06 23:52:40 · 1686 阅读 · 0 评论