JavaScript基础
文章平均质量分 76
JavaScript基础教程
abuanden
这个作者很懒,什么都没留下…
展开
-
js类型判读
判断是不是函数1. fun1 instanceOf Function2. fun1.__proto__== Function.prototype3. typeof4. Object.prototype.toString.call() =>// ‘[object Function]’5. constructor判断是不是数组1. arr1 instanceOf Array2. arr1.__proto__==Array.prototype3. Array.isArray(最好用的原创 2021-03-30 14:41:08 · 196 阅读 · 0 评论 -
数组去重
文章目录一、利用ES6 Set去重(ES6中最常用)二、利用for嵌套for,然后splice去重(ES5中最常用)三、利用indexOf去重四、利用includes五、利用hasOwnProperty六、利用Map数据结构去重七、利用filter选自:JavaScript数组去重(12种方法,史上最全)一、利用ES6 Set去重(ES6中最常用)function unique (arr) { return Array.from(new Set(arr))}var arr = [1,1,'t转载 2021-03-30 14:30:54 · 103 阅读 · 0 评论 -
JS判断属性和方法是否是自身的
一.hasOwnproperty所有继承了 Object 的对象都会继承到 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。var test = function () {}test.func = function () { console.log(222);}test.prototype.wuwu = function () { console.log(333);原创 2021-03-28 15:06:11 · 661 阅读 · 0 评论 -
构造函数方法与原型链方法的区别
ES5的解释在new一个实例之后,他的实例可以调用构造函数和prototype上面的方法。但是不同的是,定义在构造函数里面的方法,会在每一个实例里面创建一个函数,占用空间。每个实例的test方法指向不同内存。而prototype中的方法,只占用一块内存,所有实例指向他,节约空间。 function Cat(x,y) { this.test1 = () => { console.log("我是1"); } } Ca原创 2021-03-22 15:36:36 · 372 阅读 · 0 评论 -
5、作用域链和原型链的区别
针对的对象不同作用域链:针对变量原型链: 针对构造函数(对于对象的属性,方法)形式不同作用域链:作用域的特点就是,先在自己的变量范围中查找,如果找不到,就会沿着作用域往上找。如:var a = 1;function b(){ var a = 2; function c(){ var a = 3; console.log(a); } c();}b();最后打印出来的是3,因为执行函数c()的时候它在自己的范围内找到了原创 2021-03-14 10:35:41 · 603 阅读 · 0 评论 -
8、this指向全解答
选自:文章目录this 是什么this 的四种绑定规则1. 默认绑定2. 隐式绑定**`多层调用链`**隐式丢失(函数别名)隐式丢失(回调函数)3. 显示绑定call和apply硬绑定4. new 绑定绑定规则的优先级绑定例外扩展:箭头函数case 1 (正常调用)this 是什么理解this之前, 先纠正一个观点,this 既不指向函数自身,也不指函数的词法作用域。如果仅通过this的英文解释,太容易产生误导了。它实际是在函数被调用时才发生的绑定,也就是说this具体指向什么,取决于你是怎么调用的函转载 2021-03-08 00:50:56 · 163 阅读 · 0 评论 -
7、实现sleep函数
文章目录方法一:伪死循环阻塞主线程方法二:定时器方法三:es6异步处理(Promise)方法四:es7---- async/awaitsleep函数作用是让线程休眠,等到指定时间在重新唤起。方法一:伪死循环阻塞主线程这种实现方式是利用一个伪死循环阻塞主线程。因为JS是单线程的。所以通过这种方式可以实现真正意义上的sleep()。function sleep(delay) { var start = (new Date()).getTime(); while ((new Date()).g原创 2021-03-07 20:20:25 · 438 阅读 · 0 评论 -
6、根据promiseA+实现一个自己的promise
选自:Promise不会??看这里!!!史上最通俗易懂的Promise!!!文章目录步骤一:实现成功和失败的回调方法步骤二:then方法链式调用最终代码和测试ES6.Class实现ES5实现步骤一:实现成功和失败的回调方法要实现上面代码中的功能,也是promise最基本的功能。首先,需要创建一个构造函数promise,创建一个promisel类,在使用的时候传入了一个执行器executor,executor会传入两个参数:成功(resolve)和失败(reject)。之前说过,只要成功,就不会失败,只原创 2021-03-07 19:59:02 · 144 阅读 · 0 评论 -
5、let、const、var的区别
文章目录一,window挂载二,变量提升;三,作用域四,重复声明一,window挂载var声明的变量会挂载在window上。而let和const声明的变量不会: let a = 2 var b = 3 console.log(window.a);//undefined console.log(window.b);//3var定义的变量,作用域是整个封闭函数,是全域的;let定义的变量,作用域是在块级或者字块中;二,变量提升;let和const不存在变量提原创 2021-03-07 13:01:12 · 91 阅读 · 0 评论 -
4、async和await详解
选自:理解 JavaScript 的 async/await文章目录1. async 和 await 在干什么1.1. async 起什么作用1.2. await 到底在等啥1.3. await 等到了要等的,然后呢2、async/await 帮我们干了啥2.1. 作个简单的比较2.2. async/await 的优势在于处理 then 链2.3. 依次执行多个请求2.4. 并发执行多个请求2.5. 如果结果是reject怎么办1. async 和 await 在干什么任意一个名称都是有意义的,先从字原创 2021-03-07 12:48:51 · 2210 阅读 · 0 评论 -
3、class类
选自:Javascript定义类(class)的三种方法es6中class类的全方面理解(一)文章目录Javascript定义"类"的四种方法一、构造函数法二、Object.create()法三、极简主义法(推荐)3.1 封装3.2 继承3.3 私有属性和私有方法3.4 数据共享四、Class方法constructor和class的特点1、constructor方法是类的构造函数的默认方法,通过new命令生成对象实例时,自动调用该方法。2、constructor方法如果没有显式定义,会隐式生成一个co原创 2021-03-06 20:23:16 · 122 阅读 · 0 评论 -
1、什么是箭头函数
目录基础语法箭头函数与function的区别1、this的指向:2、构造函数3、变量提升什么时候不该使用箭头函数1、在对象上定义函数2、在原型上定义函数3、动态上下文中的回调函数4、构造函数中基础语法通常函数的定义方法var fn1 = function(a, b) { return a + b} function fn2(a, b) { return a + b}使用ES6箭头函数语法定义函数,将原函数的“function”关键字和函数名都删掉,并使用“=>”连接参转载 2021-03-06 17:34:15 · 13966 阅读 · 2 评论 -
2、Promise的用法
目录一、什么是Promise为什么要用Promise二、promise的优缺点三、 怎么用Promiseresolve的用法reject的用法对resolve和reject的总结(特别重要):其他用法catch的用法all的用法:谁跑的慢,以谁为准执行回调。race的用法:谁跑的快,以谁为准执行回调anytry一、什么是PromisePromise是异步编程的一种解决方案:从语法上讲,promise是一个对象,从它可以获取异步操作的消息;从本意上讲,它是承诺,承诺它过一段时间会给你一个结果。prom原创 2021-03-06 16:46:52 · 198 阅读 · 0 评论 -
3、浏览器的Event loop(事件循环机制)
选自:带你彻底弄懂Event Loop什么是 Event Loop?Event Loop是什么“Event Loop是一个程序结构,用于等待和发送消息和事件。(a programming construct that waits for and dispatches events or messages in a program.)”简单说,就是在程序中设置两个线程:一个负责程序本身的运行,称为"主线程";另一个负责主线程与其他进程(主要是各种I/O操作)的通信,被称为"Event Loop线原创 2021-03-05 11:38:48 · 221 阅读 · 1 评论 -
2、事件绑定、委托、阻止默认事件和阻止冒泡
目录事件绑定的三种方法一、直接在html标签里添加事件。二、把一个函数赋值给一个事件处理程序属性。三、事件监听:只可以在该元素的事件监听中看到委托什么是事件冒泡事件委托的优点【1】可以大量节省内存占用,减少事件注册,比如在ul上代理所有li的click事件就非常棒【2】可以实现当新增子对象时无需再次对其绑定(动态绑定事件)基本实现【1】JavaScript原生实现事件委托阻止默认事件1、什么是默认事件2、“阻止事件冒泡”和“阻止默认事件”非IE浏览器IE浏览器事件绑定的三种方法一、直接在html标签里添原创 2021-03-04 22:06:50 · 504 阅读 · 1 评论 -
闭包、内存泄漏、垃圾回收机制详解
目录内存泄漏和垃圾回收机制一、什么是内存泄漏?二、垃圾回收机制三、内存泄漏的识别方法3.1 浏览器四、WeakMap五、WeakMap 示例六、常见的内存泄漏1、闭包2、意外的全局变量3、被遗忘的计时器或回调函数4、脱离 DOM 的引用闭包详见:闭包的应用和常用的场景内存泄漏和垃圾回收机制选自:JavaScript 内存泄漏教程js常见的内存泄漏JavaScript内存泄露的4种方式及如何避免一、什么是内存泄漏?程序的运行需要内存。只要程序提出要求,操作系统或者运行时(runtime)就必须原创 2021-03-04 19:51:15 · 524 阅读 · 5 评论 -
8、闭包的应用和常用的场景
文章目录什么是闭包举例注意点试题什么是闭包摘抄自:阮一峰的网络日志 我的理解是,闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。闭包可以用在许多地方。它的最大用处有两个:一个是前面提到的可以读取函数内部的变量另一个就是让这些变量的值始终保持在内存中。举例function f1(){ var n=99原创 2021-03-04 00:25:05 · 317 阅读 · 0 评论 -
JavaScript数组方法与字符串方法全解
数组数组把数组转换为字符串(不改变原数组,返回新的字符串)jointoString增(返回新数组长度)pushunshift删(返回被删除的值。类型不变)popshift拼接splice(start,length,insert,insert)(拼接)slice(start,end) (裁剪,创建新数组,不改变原数组)concat(返回一个新数组,不改变原数组)排序字符串数组把数组转换为字符串(不改变原数组,返回新的字符串)除了join,slice,concat。map,filter,some,e原创 2021-02-04 22:34:12 · 215 阅读 · 3 评论