随笔分类 -  JavaScript

摘要:Js创建对象的方式 Js创建对象的方式,这里的对象除了指Js内置Object对象之外还有更加广义上的面向对象编程中的对象。 字面量方式 对象字面变量是对象定义的一种简写形式,能够简化创建包含大量属性的对象的过程。 var obj = { a: 1, b: function(){ return thi 阅读全文
posted @ 2020-07-07 11:14 WindRunnerMax 阅读(135) 评论(0) 推荐(0) 编辑
摘要:null和undefined的区别 在Js中null与undefined是两种基本数据类型,都可以用来表示"无"这个概念,但是在语义表达以及实际使用上是有所区别的。 描述 大多数计算机语言只有一个用来表示"无"这个概念的值,例如C与C++的NULL、Java与PHP的null、Python的None 阅读全文
posted @ 2020-07-01 10:56 WindRunnerMax 阅读(305) 评论(0) 推荐(0) 编辑
摘要:async/await剖析 JavaScript是单线程的,为了避免同步阻塞可能会带来的一些负面影响,引入了异步非阻塞机制,而对于异步执行的解决方案从最早的回调函数,到ES6的Promise对象以及Generator函数,每次都有所改进,但是却又美中不足,他们都有额外的复杂性,都需要理解抽象的底层运 阅读全文
posted @ 2020-06-20 21:21 WindRunnerMax 阅读(306) 评论(0) 推荐(1) 编辑
摘要:Thunk函数的使用 编译器的求值策略通常分为传值调用以及传名调用,Thunk函数是应用于编译器的传名调用实现,往往是将参数放到一个临时函数之中,再将这个临时函数传入函数体,这个临时函数就叫做Thunk 函数。 求值策略 编译器的求值策略通常分为传值调用以及传名调用,在下面的例子中,将一个表达式作为 阅读全文
posted @ 2020-06-19 23:33 WindRunnerMax 阅读(591) 评论(0) 推荐(0) 编辑
摘要:模板语法的简单实现 模板语法允许在HTML中之插入Js变量以及表达式,当在Js中控制render的时候能够自动在页面上将变量或者是表达式进行计算并显示,比较常见的模板语法有mustcache风格的{{}}以及DSL风格的dsl-html等。 AST AST抽象语法树,全称为Abstract Synt 阅读全文
posted @ 2020-06-15 16:48 WindRunnerMax 阅读(224) 评论(0) 推荐(0) 编辑
摘要:深入理解Js数组 在Js中数组存在两种形式,一种是与C/C++等相同的在连续内存中存放数据的快数组,另一种是HashTable结构的慢数组,是一种典型的字典形式。 描述 在本文中所有的测试都是基于V8引擎的,使用的浏览器版本为Chrome 83.0,当然直接使用Node也是可以的。通常创建数组一般用 阅读全文
posted @ 2020-06-13 21:30 WindRunnerMax 阅读(1220) 评论(0) 推荐(0) 编辑
摘要:Js文件异步加载 浏览器中渲染引擎与Js脚本引擎是互斥的,在浏览器开始渲染页面时,如果遇到<script>标签,会停止渲染当前页面,也就是说在脚本加载与执行的过程中会阻塞页面的渲染,在网速较差的环境下可能会出现浏览器页面假死的情况,这也就是尽量将<script>文件放置于<body>后的原因,Js文 阅读全文
posted @ 2020-06-07 10:06 WindRunnerMax 阅读(364) 评论(0) 推荐(0) 编辑
摘要:XML和JSON的比较 XML与JSON都可以用来描述或者存储数据,两者都有各自的优点,使用场景取决于需求。 描述 XML 可扩展标记语言Extensible Markup Language,是一种用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型、存储数据等,是一种允许用户对 阅读全文
posted @ 2020-06-03 12:08 WindRunnerMax 阅读(436) 评论(0) 推荐(0) 编辑
摘要:Js中fetch方法 fetch()方法定义在Window对象以及WorkerGlobalScope对象上,用于发起获取资源的请求,其返回一个Promise对象,这个Promise对象会在请求响应后被resolve,并传回Response对象。 描述 Promise<Response> fetch( 阅读全文
posted @ 2020-06-01 13:29 WindRunnerMax 阅读(13143) 评论(2) 推荐(3) 编辑
摘要:Js捕获异常的方法 JavaScript的异常主要使用try catch finally语句以及窗口对象window的onerror事件来捕获。 try catch finally try catch finally只能捕获运行时的错误,无法捕获语法错误,可以拿到出错的信息,堆栈,出错的文件、行号、 阅读全文
posted @ 2020-05-31 12:34 WindRunnerMax 阅读(3900) 评论(0) 推荐(0) 编辑
摘要:Object对象 Object对象是JavaScript中两个顶层对象之一,提供方法供直接调用以及原型链继承调用。 Object.assign Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象,本文认为只有引用类型才有浅拷贝与深拷贝的概念, 阅读全文
posted @ 2020-05-30 16:17 WindRunnerMax 阅读(289) 评论(0) 推荐(0) 编辑
摘要:Set与WeakSet Set对象允许存储任何类型的唯一值,无论是原始值或者是对象引用,Set对象中的值不会重复。 WeakSet对象允许存储对象弱引用的唯一值,WeakSet对象中的值同样不会重复,且只能保存对象的弱引用。 Set 描述 Set对象是值的集合,可以按照插入的顺序迭代它的元素,Set 阅读全文
posted @ 2020-05-28 13:18 WindRunnerMax 阅读(225) 评论(0) 推荐(1) 编辑
摘要:Map与WeakMap Map对象用来保存键值对,并且能够记住键的原始插入顺序,任何对象或者原始值都可以作为键或者是值。 WeakMap对象同样用来保存键值对,对于键是弱引用的而且必须为一个对象,而值可以是任意的对象或者原始值。 Map 描述 Map对象类似于一个普通的键值对的Object对象,也是 阅读全文
posted @ 2020-05-26 13:22 WindRunnerMax 阅读(219) 评论(0) 推荐(0) 编辑
摘要:实现浅拷贝与深拷贝 包含基本数据类型与引用数据类型两种不同的数据类型的值,深拷贝与浅拷贝的概念只存在于引用数据类型。对于引用类型,浅拷贝是拷贝了指向这个对象堆内存的指针,是拷贝了对原对象引用,深拷贝是拷贝了该对象的所有属性到一个新的对象,若是原对象的某属性依然引用了其他对象,那么需要将原对象引用的其 阅读全文
posted @ 2020-05-24 20:04 WindRunnerMax 阅读(353) 评论(0) 推荐(0) 编辑
摘要:Js的GC机制 在 七种基本类型中的引用类型 的变量其占据内存空间大且大小不固定,在堆内存中实际存储对象,在栈内存中存储对象的指针,对于对象的访问是按引用访问的。在栈区中执行的变量等是通过值访问,当其作用域销毁后变量也就随之销毁,而使用引用访问的堆区变量,在一个作用域消失后还可能在外层作用域或者其他 阅读全文
posted @ 2020-05-20 11:47 WindRunnerMax 阅读(498) 评论(0) 推荐(0) 编辑
摘要:防抖与节流 防抖 与节流 都是控制事件处理函数执行频率的方法,当函数会进行 操作或者具有请求服务器等行为并且作为高频事件例如 触发的事件处理函数时,就需要进行事件处理函数执行频率的控制,否则会造成大量的资源浪费致使性能下降,当然无论是防抖与节流实质上并没有减少事件触发次数,而是通过减少事件处理函数的 阅读全文
posted @ 2020-05-19 12:52 WindRunnerMax 阅读(141) 评论(0) 推荐(0) 编辑
摘要:Js中的堆栈 堆 是动态分配的内存,大小不定也不会自动释放,栈 为自动分配的内存空间,在代码执行过程中自动释放。 栈区 在栈内存中提供一个供 代码执行的环境,关于作用域以及函数的调用都是栈内存中执行的。 中基本数据类型 、`Number Boolean Null Undefined Symbol O 阅读全文
posted @ 2020-05-18 12:49 WindRunnerMax 阅读(603) 评论(0) 推荐(0) 编辑
摘要:getter与setter 是一个获取某个属性的值的方法, 是一个设定某个属性的值的方法。 描述 通过 与`setter getter setter`即可实现监听,而不需要找到并修改每一个操作这个值的代码。 有时需要允许访问返回动态计算值的属性,或者需要反映内部变量的状态,而不需要使用显式方法调用, 阅读全文
posted @ 2020-05-14 17:17 WindRunnerMax 阅读(154) 评论(0) 推荐(0) 编辑
摘要:Js实现链表操作 实现链表主要操作,包括创建链表、遍历链表、获取链表长度、获取第 个元素值、获取倒数第 个元素值、插入节点、删除节点、有序链表合并、有序链表交集。 创建链表 遍历链表 获取链表长度 获取第i个元素值 每日一题 阅读全文
posted @ 2020-05-13 11:58 WindRunnerMax 阅读(795) 评论(0) 推荐(0) 编辑
摘要:defineProperty 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象,也就是说,该方法允许精确地添加或修改对象的属性。 语法 : 要定义属性的对象。 : 要定义或修改的属性的名称或 。 : 要定义或修改的属性描述符。 属性描述符 对象里目前存在的属性描述符有两 阅读全文
posted @ 2020-05-12 11:52 WindRunnerMax 阅读(238) 评论(0) 推荐(0) 编辑