
你不知道的JS
文章平均质量分 85
你不知道的JS
Prosper Lee
谁又能来拯救我这灰暗的人生呢……
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
你不知道的JavaScript(十二):元编程 - 代理、Reflect API
的元编程能力提供了模拟各种语法特性的编程等价物,把之前隐藏的抽象操作暴露出来。在这种意义上,代理成为了代码交互的主要对象,而实际目标对象保持隐藏 / 被保护的状态。所以你可能希望预先定义好一个对象的所有属性 / 方法之后,访问不存在的属性名时能够抛出一个错误。算法定义的,这个算法产生所有拥有的属性(字符串或符号),不管是否可枚举。在 ES6 之前,一个对象键 / 属性的列出顺序是依赖于具体实现,并未在规范中定义。当试着访问或设置一个还不存在的属性时,默认情况下对象不是非常具有防御性。机制运作的主要通道是。原创 2022-10-01 11:11:12 · 831 阅读 · 0 评论 -
你不知道的JavaScript(十一):元编程 - 公开符号
都可以通过指定一个方法来定制这个。在任意对象值上作为属性的符号。原创 2022-09-30 19:05:10 · 593 阅读 · 0 评论 -
你不知道的JavaScript(十):解构、函数默认传参、类super、模板字面量、生成器提前完成、集合、新增API
方法(某种程度上说有点讽刺),没有 get(…WeakMap 是 map 的变体,二者的多数外部行为特性都是一样的,区别在于内部内存分配(特别是其 GC)的工作方式。WeakMap 没有 size 属性或 clear() 方法,也不会暴露任何键、值或项目上的迭代器。从一个数组中复制一部分到同一个数组的另一个位置,覆盖这个位置所有原来的值。WeakSet 的值必须是对象,而并不像 set 一样可以是原生类型值。set 是一个值的集合,其中的值唯一(重复会被忽略)方法不会增加数组的长度。原创 2022-09-30 18:37:35 · 1007 阅读 · 0 评论 -
你不知道的JavaScript(九):异步和性能
大体说来,只能确保你的回调函数不会在指定的时间间隔之前运行,但可能会在那个时刻运行,也可能在那之后运行,要根据事件队列的状态而定。它所做的是设定一个定时器。当定时器到时后,环境会把你的回调函数放在事件循环中,这样,在未来某个时刻的 tick 会摘下并执行这个回调。Promise 链也开始提供(尽管并不完美)以顺序的方式表达异步流的一个更好的方法,这有助于我们的大脑更好地计划和维护异步 JavaScript 代码。js程序的执行顺序整体上是从头到尾执行的,但不是从头到尾一成不变的,比如两个ajax请求。原创 2022-09-27 20:24:06 · 434 阅读 · 0 评论 -
你不知道的JavaScript(八):类型和语法
这样的属性和方法,需要通过封装对象才能访问,此时 JavaScript 会自动为基本类型值包装(box 或者 wrap)一个封装对象。实际上,使用常量和使用构造函数的效果是一样的(创建的值都是通过封装对象来包装)使用相同的算法,所以除了 JavaScript 引擎实现上的细微差别之外,它们之间并没有什么不同。undefined 和 null 常被用来表示“空的”值或“不是值”的值。如果两个值的类型不同,我们就需要考虑有没有强制类型转换的必要,有就用。如果有并且返回基本类型值,就使用该值进行强制类型转换。原创 2022-09-24 19:12:29 · 1662 阅读 · 0 评论 -
你不知道的JavaScript(七):行为委托 及 类写法的实例应用
JavaScript 中这个。的本质就是对象之间的关联关系。以委托行为方式来思考上述代码。以下的编码格式风格称为。未重写父类方法,所以。重写了父类方法,所以。原创 2022-08-22 19:38:26 · 307 阅读 · 0 评论 -
你不知道的JavaScript(六):原型
## `[[Prototype]]` > 定义一个对象,当访问对象内属性时,可以找到就可以相当于调用的是对象`[[GET]]`方法,找到属性对应的值,当找不到属性时,这个时候就会去寻找`[[Prototype]]`链上的属性了,如果还是找不到那就会继续在链上找`[[Prototype]]`,从而继续查找,直到查找完整个链,最终如果还是未曾找到,那么就会返回`undefined`。如: ```js function Person(){ this.name = 'Lee'; } Person.proto原创 2022-06-20 15:43:26 · 341 阅读 · 2 评论 -
你不知道的JavaScript(五):混合对象“类”
## 类理论 > 面向对象编程强调的是数据和操作数据的行为本质上是互相关联的,因此最好的设计就是把数据和它相关的行为封装起来。 > 例如:字符和字符串的关系,字符串是一串字符连接在一起,字符相当于数据,对字符串的操作是行为,通常会有计算字符串长度、添加、搜索等功能,所以被设计成了String类方法。 > > 所有的字符串都是String类的一个实例,包含字符数据和可以应用到数据上的行为动作。 ### “类”设计模式 `(编程风格)` > 面向对象的设计模式:`迭代器模式`、`观察者模式`、`工厂模式原创 2022-06-10 13:46:47 · 201 阅读 · 0 评论 -
你不知道的JavaScript(四):对象
对象 语法 类型 内置对象 内容 可计算属性 属性与方法 数组 复制对象 属性描述符 不变性 `[[Get]]`和`[[Put]]` & `Getter`和`Setter` 存在性 遍历 语法 // 文字形式 var obj1 = { name: 'Lee' }; // 构造形式 var obj2 = new Object(); obj2.name = 'Lee'; 类型 六种主要类型 string number boolean null undefined object 注意: 其中 string num原创 2022-06-02 16:03:17 · 206 阅读 · 0 评论 -
你不知道的JavaScript(三):this全面解析
严格模式 隐式绑定 单层调用,this隐式绑定到了对象上 多层调用,对象属性引用链中只有或者说会影响调用位置 隐式丢失(丢失绑定对象) 显示绑定 硬绑定(解决隐式丢失问题) API调用的“上下文”() new绑定 返回,new后的函数会返回一个 了,new后的函数会返回原创 2022-06-01 16:46:00 · 189 阅读 · 0 评论 -
你不知道的JavaScript(二):关于this
为什么要用this this 提供了一种隐式传递一个对象引用的方式,使得API设计的更加简洁并且易于复用。 function identify(context) { return context.name.toUpperCase(); } function speak(context) { var greeting = "Hello, I'm " + identify(context); console.log(greeting); } var me = { name: "Kyl原创 2022-05-30 11:45:02 · 150 阅读 · 0 评论 -
你不知道的JavaScript(一):作用域和闭包
你不知道的JavaScript作用域是什么变量储存在哪里?程序需要时如何找到变量?js实际上也是编译类型语言,但不是提前编译的编译语言的编译过程(三步)js与一般编译语言的区别作用域编译过程引擎查找变量的两种类型: `LHS` 与 `RHS`作用域嵌套异常测试词法作用域作用域的两种工作模式词法作用域欺骗词法(欺骗词法作用域)eval (不推荐使用)with (不推荐使用)不推荐原因函数作用域和块作用域函数中的作用域隐藏内部实现规避冲突函数作用域匿名与具名立即执行函数表达式(术语:IIFE)块作用域varle原创 2022-05-27 15:30:42 · 281 阅读 · 0 评论