你不知道的 JavaScript 系类
文章平均质量分 91
前端 贾公子
博主写了对element-plus的表格和表单的封装
[表格]https://gitee.com/childe-jia/table-vue3
[表单] https://gitee.com/childe-jia/form-render
大家支持一下
展开
-
你不知道的JavaScript-----生成器
生成器是一个新的函数类型,可以通过yield语句暂停自身,它的暂停和恢复是合作式的而不是抢占式的。yeild和next()除了可以控制流程的暂停和结束,还能进行双向消息传递。在异步流程控制方面,生成器的优点在于可以以同步的、顺序的方式表达异步逻辑,提高了代码可读性。原创 2022-11-23 10:42:40 · 922 阅读 · 0 评论 -
你不知道的JavaScript----promise
通过如下场景来阐述:我到快餐店的柜台,点了一个芝士汉堡。通过下订单并付款,我已经发出了一个对某个值(芝士汉堡)的请求。我已经启动了一次交易。但是,通常我不能马上就得到这个汉堡。收银员会交给我某个东西来代替汉堡:一张带有订单号的收据。收据就是一个IOU(I owe you,我欠你的)承诺(promise),保证了最终我会得到我的汉堡。所以我得好好保留我的收据,我知道这代表了我未来的汉堡,所以不需要担心, 只是现在我还是很饿!原创 2022-11-19 12:06:22 · 459 阅读 · 0 评论 -
你不知道的JavaScript ------- 回调
说白了就是一种编码风格,就是把传统的参数-返回值形式的函数调用转变成“当我执行完操作下一步该干什么”的形式。嘶,看起来还可以哈,挺干净的,逻辑清晰。但是这是我们构想的情况,现实的情况中往往存在很多“噪声”。我去商店,发现油箱里剩的油不多了,我只能先去附近最近的加油站加油,等我加完油,到了超市,我发现牛奶卖没了,牛奶没买到,我需要掉头去另一家超市,可是刚来这个城市,我不知道哪里还有超市了,我需要先去手机上检索......和// B表示现在的部分,// C表示将来的部分。原创 2022-11-18 14:20:29 · 445 阅读 · 0 评论 -
你不知道的JavaScript---异步:现在与未来
大体说来,只能确保你的回调函数不会在指定的时间间隔之前运行,但可能会在那个时刻运行,也可能在那之后运行,要根据事件队列的状态而定。进程和线程是不同的操作系统管理资源的方式,进程有自己独立的内存空间,线程没有独立地址空间,但是有自己堆栈和局部变量,线程是进程的一个实体,是CPU任务调度和分配的基本单位,线程不能独立执行,必须依存在进程之中,同一进程的多个线程共享同一内存空间,进程退出时改进程的所有线程会被清空。特性,即如果有两个函数执行,两个函数不会交替运行,一定是先完整执行第一个函数,然后才是第二个函数。原创 2022-11-14 16:41:59 · 288 阅读 · 0 评论 -
你不知道的JavaScript---------语法
if (b) { .. } else { .. }实际上是跟在else后面的一个单独的语句,所以带不带{ }都可以。换句话说,else if不符合前面介绍的编码规范,else中是一个单独的if语句。如果一个函数的最后一个形参是以 ...为前缀的,则在函数被调用是,该形参会成为 一个数组,数组中的元素都是传递给该函数的多出来的实参的值。arguments,它是js中函数内置的一个对象,而执行函数方法的实参中值都存储在arguments中;可以用来实行函数的递归;语句相当于“句子”,而表达式相当于“短语”。原创 2022-11-01 09:02:47 · 203 阅读 · 0 评论 -
你不知道的JavaScript-----强制类型转换
a和b并没有被转换为数字,因为ToPrimitive返回的是字符串,所以ToPrimitive返回的是字符串,所以这里比较的是“42”和“043”两个字符串,它们分别以“4”和“0”开头。所以建议,无论什么情况下都不要使用==true和==false。请注意,这里说的只是==,===true和===false不允许强制类型转换,所以并不涉及ToNumber。= 0 和== -1这样的写法不是很好,称为“抽象渗漏”,意思是在代码中暴露了底层的实现细节,这里是指用-1作为失败时的返回值,这些细节应该被屏蔽掉。原创 2022-10-31 11:56:38 · 899 阅读 · 0 评论 -
你不知道的JavaScript-----原生函数
实际上,使用常量和使用构造函数的效果是一样的(创建的值都是通过封装对象来包装)。通过构造函数(如 new String("hello world"))创建出来的是封装了基本类型值(如 "hello world")的封装对象。符号可以用作属性名,但无论是在代码还是开发控制台中都无法查看和访问它的值,只会显示为诸如 Symbol(Symbol.create) 这样的值。相较于其他原生构造函数, Date(..) 和 Error(..) 的用处要大很多,因为没有对应的常量形式来作为它们的替代。原创 2022-10-27 09:46:57 · 468 阅读 · 0 评论 -
你不知道的JavaScript-------值
1 delete运算符可以将单元从数组中删除,但length属性不会发生变化。2 数组通过数字进行索引,但数组也是对象,所以也可以包含字符串键值和属性(不过不计算在数组长度内)3.如果字符串键值能被强制转换为十进制数字,会被当数字索引处理4.类数组转数组Array.prototype.slice.call(arguments);5."稀疏"数组(含有空白或空缺单元的数组)原创 2022-10-18 15:54:13 · 313 阅读 · 0 评论 -
你不知道的JavaScript----类型
JavaScript中的null表示机器码中的NULL(空指针),而在大多数平台下NULL是0x00(十六进制),所以null是00000000,标签位也是000,故 typeof null === "object"。还有一种不用通过 typeof 的安全防范机制的方法,就是检查所有全局变量是否是全局对象的属性,浏览器中的全局对象是 window。这里的动态类型,可以理解成变量的类型是动态的,可以在运行时随时改变,也可以理解成。相反,还没有在作用域中声明过的变量,是undeclared的。原创 2022-10-14 09:49:31 · 376 阅读 · 0 评论 -
你不知道的JavaScript---------- 行为委托
JavaScript中的函数之所以可以访问call(..)、apply(..)和bind(..),就是因为函数本身是对象,而函数对象同样有[[Prototype]]并且关联到Function.prototype对象,因此所有函数对象都可以通过委托调用这些默认方法。举例来说,(使用类时)你最直观的想法可能是使用Bar instanceof Foo(因为很容易把“实例”理解成“继承”),但是在JavaScript中这是行不通的,你必须使用Bar.prototype instanceof Foo。原创 2022-10-13 17:50:34 · 312 阅读 · 0 评论 -
你不知道的JavaScript------[prototype]
new Foo(),创建并返回了一个新对象,这个新对象的[[prototype]]属性(在浏览器上显示为__proto__)的值是Foo的原型对象(Foo.prototype)new Foo()这个含糊调用实际上并没有直接创建关联,只是间接完成了我们的目标:关联到其他对象的新对象,做到这点更加直接的方式:Object.create(目标对象)调用new Foo()时,会创建a,其中一步就是将a内部的[[Prototype]]链接到Foo.prototype所指的对象。这一系列对象的链接被称为“原型链”。原创 2022-10-13 09:40:09 · 379 阅读 · 0 评论 -
你不知道的JavaScript----混合对象 ”类“
类的设计模式:实例化,继承和(相对)多态。原创 2022-10-12 14:33:25 · 311 阅读 · 0 评论 -
你不知道的JavaScript-----对象
对象深入原创 2022-10-10 16:53:43 · 421 阅读 · 0 评论 -
你不知道的JavaScript----this解析
比如,我们在同一个方法内使用了一个外部变量a和this,此时,不管该方法被谁调用,这个外部变量a指向的永远都是该方法定义时所在代码块外部的那个变量a(这就是词法作用域)不会改变,但是this不一样,它会因为调用该方法的对象的改变而改变!当this遇到了return,如果返回的是一个对象,那么this就是指向那个对象,否则还是原来的。其实简单来说,正常情况下,this绑定的是当前方法的调用对象,注意不是定义时的词法作用域,它与词法作用域最大的区别就是:随着调用该方法的对象的不同,this指向的对象也会改变!原创 2022-10-09 14:40:50 · 505 阅读 · 0 评论 -
你不知道的JavaScript---闭包
当函数可以记住并访问所在的词法时,就产生了闭包,即使函数是在当前词法作用域之外执行的闭包是什么?闭包是一个函数对自己所在的词法作用域的引用闭包的作用?闭包可以使得函数可以继续访问自己被定义时的词法作用域。原创 2022-10-06 15:54:10 · 602 阅读 · 0 评论 -
你不知道的JavaScript----提升
声明提升了,赋值(函数表达式)却就在原地不提升。编译阶段中的一部分工作就是找到所有的声明,并用合适的作用域将它们关联起来。可以理解为,代码在编译时,会先查找函数声明,然后才会寻找变量声明!并且,变量声明时如果该变量已被函数声明占用,则会忽略变量声明!这个过程就好像变量和函数声明从它们在代码中出现的位置被“移动” 到了最上面。foo 函数的声明(这个例子还包括实际函数的隐含值)被提升了,因此第一行中的调用可以正常执行。正确的思路就是:包括变量和函数在内的所有声明都会在任何代码被执行前首先被处理。原创 2022-10-05 18:24:36 · 77 阅读 · 0 评论 -
你不知道的JavaScript-----函数作用域&&块作用域
js中的作用域,主要有函数作用域和块级作用域,当然还有全局作用域。函数作用域的使用,可以隐藏代码实现,减少变量暴露,避免命名冲突,符合软件设计的最小特权原则。关于函数作用,还讲了函数声明与函数表达式的辨别方法和区别。在函数表达式中,还分出了命名函数表达式和匿名函数表达式。块级作用域的实现,有赖于ES6的版本进步,提供let和const关键字,可以实现同其他语言相同的由{...}包裹起来的块级作用域。比较典型的就是let版的for循环和var版的for循环1.var。原创 2022-10-05 10:37:38 · 377 阅读 · 0 评论 -
你不知道的JavaScript-----词法作用域
引擎就是老大,是终极控制中心,控制整个程序的执行。编译器是协助引擎解析程序,而作用域是解析程序的一种规则。(无论函数在哪里调用,也无论它如何被调用,它的词法作用域都只由函数被声明时所处的位置决定)原创 2022-10-04 19:47:07 · 544 阅读 · 0 评论 -
你不知道的 JavaScript ----作用域
查询机制作用域是一套规则,用于确定在何处以及如何查找变量(标识符)。如果查找的目的是对变量进行赋值,那么就会使用LHS查询;如果目的是获取变量的值,就会使用RHS查询作用域链LHS和RHS查询都会在当前执行作用域中开始,如果有需要(也就是说它们没有找到所需的标识符),就会向上级作用域继续查找目标标识符,这样每次上升一级作用域(一层楼),最后抵达全局作用域(顶层),无论找到或没找到都将停止。异常机制不成功的RHS引用会导致抛出ReferenceError异常。原创 2022-09-22 19:02:40 · 334 阅读 · 0 评论