JavaScript高级

222 阅读1分钟

DOM

mouseover,mouseout 和 mouseenter,mouseleave区别

  1. 盒子中有后代元素的,我们尽可能用mouseenter,mouseleave
  2. 需要基于冒泡传播干什么事情,我们只能用mouseover,mouseout

javascript

数据类型:

基本数据类型(值类型):       

 number string boolean null undefined   

引用数据类型:     

    object : {} [] /^$/ Date Math 实例对象        function        对象的属性名一定不能是引用类型值,默认会把引用类型值转换为字符串   

Symbol(唯一值)

浏览器底层渲染机制

let和var区别

  1. let没有变量提升(但是在词法解析阶段也得知某个变量是否是私有变量)
  2. let不允许在相同的作用域下重复声明
  3. let解决了JS中的暂时性死区问题
  4. let创建的全局变量没有给window设置对应的属性
  5. let会产生块级作用域

new执行过程

  1. 创建一个私有的栈内存
  2. 形参赋值&变量提升
  3. 浏览器会创建一个对象出来(这个对象就是当前构建函数的一个实例),并且让函数的this指向这个实例对象 =>构造函数模式中,方法中的this就是当前类的实例
  4. 执行代码
  5. 在我们不设置return的情况下,浏览器会把创建的实例对象默认返回,如果设置了return ,返回的是一个复杂数据类型,会返回这个复杂数据类型