浅拷贝与深拷贝

在了解深浅拷贝前需要首先先谈谈拷贝的概念

拷贝

拷贝就是拷贝指向对象的指针,意思就是说:拷贝出来的目标对象的指针和源对象的指针指向的内存空间是同一块空间,

浅拷贝

浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址。

深拷贝

深拷贝,在拷贝引用类型成员变量时,为引用类型的数据成员另辟了一个独立的内存空间,实现真正内容上的拷贝。

浅拷贝的四种方式

Js判断浏览器进度条是否到底部

判断浏览器滚动条是否到达浏览器底部在判断前是需要了解几个关键词

  • 滚动条到顶部的距离 scrollTop
  • 当前窗口内容的可视区 windowHeight
  • 滚动条内容的总高度 scrollHeight

判断到底部的等式是:scrollTop+windowHeight=scrollHeight

具体代码如下:

JsQuestions-2_定时器

// 发生什么?
let config = {
  alert: setInterval(()=>{
      console.log('Alert!')
  }1000)
}
config = null
  • A:setInterval 的回调不会被调用
  • B:setInterval 的回调会被调用一次
  • C:setInterval 的回调会被每秒钟调用
  • D:我们从没调用过config.alert(),config为null

对象按照某一属性排序

使对象按照某个顺序排序 当前属性值相同时按照另一个属性排序 let obj=[ {name:'zhangsan',age:20,score:89}, {name:'zhaoli',age:20,score:90}, {name:'lisi',age:21,score:86}, {name:'wangwu',age:23,score:95}, ] function rank(attr1,attr2) { return function (a,b) { if (a[attr1]==b[attr1]) return a[attr2]-b[attr2]; return a[attr1]-b[attr1]; } } obj.sort(rank('age')); console.log(obj.sort(rank('age','score')));