工作中的解题思想(六)

  1. 构造函数的返回值
    1
    2
    3
    4
    5
    6
    // 例1:
    function Person(name) {
    this.name = name
    return name;
    }
    let p = new Person('Tom');
    问:p或者Person返回什么?
    答:{name: ‘Tom’}
    1
    2
    3
    4
    5
    6
    // 例2:
    function Person(name) {
    this.name = name
    return {}
    }
    let p = new Person('Tom');
    问:p或者Person返回什么?
    答:{}
    对于上述的解析:构造函数不需要显示的返回值。使用new来创建对象(调用构造函数)时,如果return的是非对象
    (数字、字符串、布尔类型等)会忽略返回值;如果return的是对象,则返回该对象(注:若return null也会忽略返回值)。
  2. 什么是Netlify
    它是一个提供静态资源网络托管的综合平台。简单来说:它的功能之一就跟我们之前Hexo博客的静态托管平台 Github Page一样,
    不过,Netlify可比github Page功能多多了,而且速度也快。
    简单来说:
    a. 托管静态资源;
    b. 将静态网站部署到CDN上;
    c. Continuous Deployment 持续部署,当你提交改变到git 仓库,它就会自动运行build command,进行自动部署;
    d. 可以添加自定义域名;
    e. 重头戏:可以启用免费的TLS证书,启用HTTPS
    官网:www.netlify.com
  3. 关于es5和es6中继承的不同点
    ES5的继承中,先创建子类的实例对象this,然后再将父类的方法添加到this上( Parent.apply(this) );
    ES6采用的是先创建父类的实例this(故要先调用 super( )方法),完后再用子类的构造函数修改this。
    参考链接:https://www.jianshu.com/p/8f6dd832e57a
  4. instanceof的内部机制以及相关的考题
    参考链接:https://juejin.im/post/5c19c1b6e51d451d1e06c163
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // instanceof的内部机制
    // 假设现有x instanceof y
    // 实际上instanceof就是去判断person对象和Person类的原型是否相同,它会沿着
    // 原型链一层一层的去找原型,如果找到则返回true。因此,这也就是我们使用无限
    // 循环的原因。
    function newInstanceof (x, y) {
    while (x.__proto__ !== null) {
    if (x.__proto__ === y.prototype) {
    return true
    }
    x.__proto__ = x.__proto__.__proto__
    }
    return false
    }
    function Person () {
    this.name = 'daipi173'
    }
    let person = new Person()
    console.log(newInstanceof(person, Person)) // true
  5. for in和for of的区别
    参考链接:https://www.jianshu.com/p/c43f418d6bf0
  6. 理解macrotasks 和 microtasks
    需要注意:主线程阻塞时,任务队列仍然是能够被推入任务的。这也就是为什么当页面的JavaScript进程阻塞时,
    我们触发的点击等事件,会在进程恢复后依次执行。
    参考链接:https://juejin.im/entry/58d4df3b5c497d0057eb99ff
    在这里会遇到执行上下文和执行栈,可以参考链接:https://juejin.im/post/5ba32171f265da0ab719a6d7
  7. 5种方法实现数组扁平化
    参考链接:https://juejin.im/post/5adc8e396fb9a07aa0479725