随笔分类 -  JavaScript高级

摘要:◼ 但是上面的代码整体来说看起来是有点奇怪的: 我们获取一个数组的时候,需要自己创建一个index变量,再创建一个所谓的迭代器对象; 事实上我们可以对上面的代码进行进一步的封装,让其变成一个可迭代对象; ◼ 什么又是可迭代对象呢? 它和迭代器是不同的概念; 当一个对象实现了iterable 阅读全文
posted @ 2024-10-21 10:49 韩德才 阅读(30) 评论(0) 推荐(0)
摘要:迭代器 什么是迭代器? ◼ 迭代器(iterator),使用户在容器对象(container,例如链表或数组)上遍访的对象,使用该接口无需关心对象的内部实现细节。 其行为像数据库中的光标,迭代器最早出现在1974年设计的CLU编程语言中; 在各种编程语言的实现中,迭代器的实现方式各不相同,但是基 阅读全文
posted @ 2024-10-21 10:32 韩德才 阅读(153) 评论(0) 推荐(0)
摘要:ES5 异步代码的处理 <script> // 1.设计一个什么地方是传入参数什么地方是传入回调函数的函数 function execode(counter,successCallback,failCallback){ // 异步任务:调用某个函数不会立马返回结果 setTimeout(()=>{ 阅读全文
posted @ 2024-10-20 01:52 韩德才 阅读(55) 评论(0) 推荐(0)
摘要:监听对象的操作 ◼ 我们先来看一个需求:有一个对象,我们希望监听这个对象中的属性被设置或获取的过程 通过我们前面所学的知识,能不能做到这一点呢? 其实是可以的,我们可以通过之前的属性描述符中的存储属性描述符来做到; 案例: //2.监听所有的属性(使用Object.defineProperty 阅读全文
posted @ 2024-10-20 01:50 韩德才 阅读(253) 评论(0) 推荐(0)
摘要:ES7 - Array Includes ◼ 在ES7之前,如果我们想判断一个数组中是否包含某个元素,需要通过 indexOf获取结果,并且判断是否为 -1。 ◼ 在ES7中,我们可以通过includes来判断一个数组中是否包含一个指定的元素,根据情况,如果包含则返回 true,否则返回false。 阅读全文
posted @ 2024-10-20 01:45 韩德才 阅读(70) 评论(0) 推荐(0)
摘要:新的ECMA代码执行描述 ◼ 在执行学习JavaScript代码执行过程中,我们学习了很多ECMA文档的术语: 执行上下文栈:Execution Context Stack,用于执行上下文的栈结构; 执行上下文:Execution Context,代码在执行之前会先创建对应的执行上下文; 变量 阅读全文
posted @ 2024-10-20 01:44 韩德才 阅读(51) 评论(0) 推荐(0)
摘要:解构Destructuring ◼ ES6中新增了一个从数组或对象中方便获取数据的方法,称之为解构Destructuring。 解构赋值是一种特殊的语法,它使我们可以将数组或对象“拆包”至一系列变量中。 ◼ 我们可以划分为:数组的解构和对象的解构。 ◼ 数组的解构: 基本解构过程 顺序解构  阅读全文
posted @ 2024-10-20 01:42 韩德才 阅读(44) 评论(0) 推荐(0)
摘要:字面量的增强 ◼ ES6中对 对象字面量 进行了增强,称之为 Enhanced object literals(增强对象字面量)。 ◼ 字面量的增强主要包括下面几部分: 属性的简写:Property Shorthand 方法的简写:Method Shorthand 计算属性名:Computed 阅读全文
posted @ 2024-10-20 01:41 韩德才 阅读(19) 评论(0) 推荐(0)
摘要:◼ 面向对象的三大特性:封装、继承、多态。 前面两个我们都已经详细解析过了,接下来我们讨论一下JavaScript的多态。 ◼ JavaScript有多态吗? 维基百科对多态的定义:多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口,或使用一个单一的符号来表示多个不同的类 阅读全文
posted @ 2024-10-20 01:41 韩德才 阅读(39) 评论(0) 推荐(0)
摘要:原型继承关系 1.p1是Person的实例对象 2.obj是Object的实例对象 3.Function/Object/Foo都是Function的实例对象(__proto__ 都等于 Function.prototype) 4.原型对象默认创建时, 隐式原型都是指向Object的显式原型的(Obj 阅读全文
posted @ 2024-10-20 01:40 韩德才 阅读(110) 评论(0) 推荐(0)
摘要:对象的方法补充 ◼ hasOwnProperty 对象是否有某一个属于自己的属性(不是在原型上的属性) ◼ in/for in 操作符 判断某个属性是否在某个对象或者对象的原型上 ◼ instanceof 用于检测构造函数(Person、Student类)的pototype,是否出现在某个实例 阅读全文
posted @ 2024-10-20 01:38 韩德才 阅读(38) 评论(0) 推荐(0)
摘要:原型链的查找顺序 面向对象的特性–继承 ◼ 面向对象有三大特性:封装、继承、多态 封装:我们前面将属性和方法封装到一个类中,可以称之为封装的过程; 继承:继承是面向对象中非常重要的,不仅仅可以减少重复代码的数量,也是多态前提(纯面向对象中); 多态:不同的对象在执行时表现出不同的形态; ◼ 那 阅读全文
posted @ 2024-10-20 01:37 韩德才 阅读(72) 评论(0) 推荐(0)
摘要:对象和函数的原型 认识对象的原型 ◼ JavaScript当中每个对象都有一个特殊的内置属性 [[prototype]],这个特殊的对象可以指向另外一个对象。 ◼ 那么这个对象有什么用呢? 当我们通过引用对象的属性key来获取一个value时,它会触发[[Get]]的操作; 这个操作会首先检查该 阅读全文
posted @ 2024-10-20 01:34 韩德才 阅读(24) 评论(0) 推荐(0)
摘要:对象的增强知识补充 ◼ 在前面我们的属性都是直接定义在对象内部,或者直接添加到对象内部的: 但是这样来做的时候我们就不能对这个属性进行一些限制:比如这个属性是否是可以通过delete删除的?这个属性是否在forin遍历的时候被遍历出来呢? ◼ 如果我们想要对一个属性进行比较精准的操作控制,那么我们 阅读全文
posted @ 2024-10-20 01:30 韩德才 阅读(75) 评论(0) 推荐(0)
摘要:◼ JavaScript历史的局限性: 长久以来,JavaScript 不断向前发展且并未带来任何兼容性问题; 新的特性被加入,旧的功能也没有改变,这么做有利于兼容旧代码; 但缺点是JavaScript 创造者的任何错误或不完善的决定也将永远被保留在JavaScript 语言中; ◼ 在ECM 阅读全文
posted @ 2024-10-20 01:27 韩德才 阅读(29) 评论(0) 推荐(0)
摘要:with语句的使用 with语句 扩展一个语句的作用域链。 <script> var obj = { message : "Hello World" } with (obj) { console.log(message) } </script> ◼ 不建议使用with语句,因为它可能是混淆错误和兼容 阅读全文
posted @ 2024-10-20 01:24 韩德才 阅读(17) 评论(0) 推荐(0)
摘要:◼ 组合(Compose)函数是在JavaScript开发过程中一种对函数的使用技巧、模式: 比如我们现在需要对某一个数据进行函数的调用,执行两个函数fn1和fn2,这两个函数是依次执行的; 那么如果每次我们都需要进行两个函数的调用,操作上就会显得重复; 那么是否可以将这两个函数组合起来,自动 阅读全文
posted @ 2024-10-20 01:23 韩德才 阅读(62) 评论(0) 推荐(0)
摘要:◼ 柯里化也是属于函数式编程里面一个非常重要的概念。 是一种关于函数的高阶技术; 它不仅被用于JavaScript,还被用于其他编程语言; ◼ 我们先来看一下维基百科的解释: 在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化; 是把接收多个参数的函数,变成接受一个单一参 阅读全文
posted @ 2024-10-20 01:22 韩德才 阅读(76) 评论(0) 推荐(0)
摘要:◼ 函数式编程中有一个非常重要的概念叫纯函数,JavaScript符合函数式编程的范式,所以也有纯函数的概念; ◼ 纯函数的维基百科定义: 在程序设计中,若一个函数符合以下条件,那么这个函数被称为纯函数: 此函数在相同的输入值时,需产生相同的输出。 函数的输出和输入值以外的其他隐藏信息或状态无 阅读全文
posted @ 2024-10-20 01:20 韩德才 阅读(76) 评论(0) 推荐(0)
摘要:◼ ES6中引用了rest parameter,可以将不定数量的参数放入到一个数组中: 如果最后一个参数是... 为前缀的,那么它会将剩余的参数放到该参数中,并且作为一个数组; ◼ 那么剩余参数和arguments有什么区别呢? 剩余参数只包含那些没有对应形参的实参,而arguments 对象包 阅读全文
posted @ 2024-10-20 01:17 韩德才 阅读(39) 评论(0) 推荐(0)