写给自己的JS 基础 面试题

47 阅读1分钟

1、new 关键字做了什么?

    function myNew (Fn,...args) {
        const obj = Object.create(Fn) // 1 创建对象并绑定Fn构造函数的原型
        Fn.apply(obj, ...args) // 2 绑定this 并执行构造函数逻辑
        return obj //3 返回实例
    }

2、map和object的区别?

  • 相同点:都是键值对的集合,支持增加和删除键值对

  • 不同点: 1、object键的类型必须是string或symbol 类型 如果是非string 会进行类型转换 map 键可以是任何类型,包括对象 数组 函数等不会进行类型转换

    2、object 的key 是无序的不会安装添加的顺序返回,对于大于等于0的整数会按照添加的顺序返回,对于小数和负数会当作字符串处理;对于string类型,按照定义的顺序进行输出并且数字优于字符串;对于symbol类型,会直接过滤不会输出 可以通过Object.getOwnPropertySymbols()方法

    map 的key是有序的安装插入的顺序返回

    3、键值操作方法不同,object 可以通过点或 中括号形式 删除用delete map则通过set get delete clear

    4、object 不具备Iterator特性 默认不能通过 for of 进行遍历。map结构的keys() values() entries() 方法返回值都具有Iterator特性

    ...持续更新中