每日3题(53)

10,000 hours to master something,not to learn something

HTML:script标签中defer和async的区别是什么?

CSS:css行高line-height的一些深入理解及应用

JavaScript:能不能手动实现一下instanceof的功能?

HTML:script标签中defer和async的区别是什么?

默认情况下,脚本的下载和执行将会按照文档的先后顺序同步进行。当脚本下载和执行的时候,文档解析就会被阻塞,在脚本下载和执行完成之后文档才能往下继续进行解析。

下面是async和defer两者区别:

  • 当script中有defer属性时,脚本的加载过程和文档加载是异步发生的,等到文档解析完(DOMContentLoaded事件发生)脚本才开始执行。
  • 当script有async属性时,脚本的加载过程和文档加载也是异步发生的。但脚本下载完成后会停止HTML解析,执行脚本,脚本解析完继续HTML解析。
  • 当script同时有async和defer属性时,执行效果和async一致。

CSS:css行高line-height的一些深入理解及应用

CSS:css行高line-height的一些深入理解及应用

JavaScript:能不能手动实现一下instanceof的功能?

function myInstanceof(left, right) {
    // 基本数据类型直接返回false
    if(typeof left !== 'object' || left === null) return false;
    // getProtypeOf是Object对象自带的一个方法,能够拿到参数的原型对象
    // 可以换成let proto = left.__proto__,下面同理
    let proto = Object.getPrototypeOf(left);
    while(true) {
        // 查找到尽头,还没找到
        if(proto == null) return false;
        // 找到相同的原型对象
        if(proto == right.prototype) return true;
        proto = Object.getPrototypeof(proto);
    }
}
console.log(myInstanceof(new String("111"), String));//true

HTML,JavaScript原文

猜你喜欢

转载自blog.csdn.net/weixin_44194732/article/details/105873963