js的知识点(观看其他人的总结知识点)

235 阅读5分钟

js执行机制的基础知识点

查看此链接 juejin.im/post/684490…

观后总结

  • 1 js在浏览器中的执行顺序是:
    宏任务-微任务-宏任务...一直一直循环的来执行的。浏览器一开始会先执行script的逻辑,遇到宏任务时会放置到宏任务队列中,遇到微任务放置到微任务中,当本次宏任务完成后开始查找微任务,全部执行后会进行下一个宏任务。
  • 2 宏任务:script、setTimeout、setInterval 、setImmediate 、I/O 、UI rendering。
  • 3 微任务:MutationObserver、Promise.then()或catch()、Promise为基础开发的其它技术,比如fetch API、 V8的垃圾回收过程、Node独有的process.nextTick。

JavsScript的闭包

查看次链接 juejin.cn/post/684490…

观后总结

  • 1 函数在定义时的词法作用域以外的地方被调用就会形成闭包。闭包使得函数可以继续访问定义时的词法作用域

Promise的基础知识点

查看此链接 juejin.im/post/684490…

观后总结

  • 1 作者总结
- Promise的状态一经改变就不能再改变。(见3.1)
.then和.catch都会返回一个新的Promise。(上面的👆1.4证明了)
catch不管被连接到哪里,都能捕获上层未捕捉过的错误。(见3.2)
在Promise中,返回任意一个非 promise 的值都会被包裹成 promise 对象,例如return 2会被包装为return Promise.resolve(2)。
Promise 的 .then 或者 .catch 可以被调用多次, 但如果Promise内部的状态一经改变,并且有了一个值,那么后续每次调用.then或者.catch的时候都会直接拿到该值。(见3.5)
.then 或者 .catchreturn 一个 error 对象并不会抛出错误,所以不会被后续的 .catch 捕获。(见3.6)
.then 或 .catch 返回的值不能是 promise 本身,否则会造成死循环。(见3.7)
.then 或者 .catch 的参数期望是函数,传入非函数则会发生值透传。(见3.8)
.then方法是能接收两个参数的,第一个是处理成功的函数,第二个是处理失败的函数,再某些时候你可以认为catch是.then第二个参数的简便写法。(见3.9)
.finally方法也是返回一个Promise,他在Promise结束的时候,无论结果为resolved还是rejected,都会执行里面的回调函数。

总结一下.then()和.race()吧
Promise.all()的作用是接收一组异步任务,然后并行执行异步任务,并且在所有异步操作执行完后才执行回调。
.race()的作用也是接收一组异步任务,然后并行执行异步任务,只保留取第一个执行完成的异步操作的结果,其他的方法仍在执行,不过执行结果会被抛弃。
Promise.all().then()结果中数组的顺序和Promise.all()接收到的数组顺序一致。
all和race传入的数组中如果有会抛出异常的异步任务,那么只有最先抛出的错误会被捕获,并且是被then的第二个参数或者后面的catch捕获;但并不会影响数组中其它的异步任务的执行
  • 2 Promise可以链式调用,promise的每次调用都会返回一个新的 promise,从而实现了链式调用。且return 2会被包装成resolve(2)。
Promise.resolve(1)
  .then(res => {
    console.log(res);
    return 2;
  })
  .catch(err => {
    return 3;
  })
  .then(res => {
    console.log(res);
  });
复制代码结果:
1
2

vue的创建

segmentfault.com/a/119000001…

JS继承系列介绍

查看此链接 juejin.im/post/684490…

知识点总结

  • 1 原型链继承中子类继承父类的属性方法等原型对象,但是如果在子类中修改从原型对象继承的引用类型属性那么原型对象也会被修改了(原型链继承中对象使用的是地址)

观后总结

  • 作者总结
    (一) 私有属性、公有属性、静态属性概念:

私有属性和方法:只能在构造函数内访问不能被外部所访问(在构造函数内使用var声明的属性),见题1.1公有属性和方法(或实例方法):对象外可以访问到对象内的属性和方法(在构造函数内使用this设置,或者设置在构造函数原型对象上比如Cat.prototype.xxx),见题1.2静态属性和方法:定义在构造函数上的方法(比如Cat.xxx),不需要实例就可以调用(例如Object.assign()) (二) 实例对象上的属性和构造函数原型上的属性:

定义在构造函数原型对象上的属性和方法虽然不能直接表现在实例对象上,但是实例对象却可以访问或者调用它们。(见题1.3)当访问一个对象的属性 / 方法时,它不仅仅在该对象上查找,还会查找该对象的原型,以及该对象的原型的原型,一层一层向上查找,直到找到一个名字匹配的属性 / 方法或到达原型链的末尾(null)。(见题1.7) (三) 遍历实例对象属性的三种方法:

使用for...in...能获取到实例对象自身的属性和原型链上的属性使用Object.keys()和Object.getOwnPropertyNames()只能获取实例对象自身的属性可以通过.hasOwnProperty()方法传入属性名来判断一个属性是不是实例自身的属性

HTTP的知识点

Webpack 知识点

知识补充