js面试题(三)

76 阅读1分钟

js面试题,每日一背

一、谈谈 This 对象的理解

  • this 总是指向函数的直接调用者
  • 如果有 new 关键字,this 指向 new 出来的那个对象
  • 在事件中,this 指向触发这个事件的对象

二、上一题延申: new 操作符具体干了什么呢?

  • 创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型
  • 属性和方法被加入到 this 引用的对象中
  • 新创建的对象由 this 所引用,并且最后隐式的返回 this

三、Array.splice() 与 Array.slice() 的区别

splice

  • 语法 1: 数组.splice(开始索引, 多少个)
    • 作用: 截取数组部分内容
  • 语法 2: 数组.splice(开始索引, 多少个, 插入的数据 1, 插入的数据 2, 插入的数据 3...)
    • 作用: 截取数组部分内容, 并插入新的数据
  • 返回值: 截取出来的部分内容 组成的 数组

slice

  • 语法: 数组.slice(开始索引, 结束索引)
  • 参数:
    • 包前不包后: 包含开始索引位置的数据, 不包含结束索引位置的数据
    • 不写开始索引, 默认是 0; 不写 结束索引, 默认是 数组的 length
    • 参数支持写负数, 表示倒数第几个, 其实就是 length + 负数
  • 作用: 截取数组部分内容
  • 返回值: 截取出来的部分内容组成的新数组

总结: splice 相当于剪切数组的部分内容, 所以会影响原数组, slice 相当于复制数组的部分内容, 所以不会影响原数组