1.this的指向 this是一个对象,this.属性名 调用里面的东西 1.this的七种指向: 1.全局中的this--window 2.函数中的this--谁调用,指向谁 3.对象方法中--谁调用,指向谁 4.构造函数--实例对象 5.定时器的回调函数--window 6.事件处理函数--事件源 7.箭头函数--上一级,箭头函数没有this,它的this指向的是绑定定义的函数所处的作用域 2.修改this指向 1.call() 、 apply(),这两个方法都可以调用函数,在调用函数的同时,可以指定this的指向 函数(实参); 函数.call(this新的指向对象,参数1,参数2,...) 函数.apply(this新的指向对象,[实参1,实参2,...]); 2.bind() 把函数的this绑定到一个目标对象上,然后返回一个新函数 后续只需要调用新函数,新函数的this永远指向了绑定的目标对象 已经使用过bind修改this指向的新的函数不能再次使用bind修改this指向,原始函数可以多次使用bind修改this指向 2.数据类型的分类 数据类型的分类 ES5--2014年 基本:string 、number、undefined、null、boolean 引用:object、function、array ES6--2015年 基本:string 、number、undefined、null、boolean、symbol(独一无二的值) 引用:object ES11--2020年 bigInt(科学计算) 数据类型的内存分配 基本:栈 引用:数据存放在堆中,栈中存放的是它在堆中的地址,指向堆中的数据 变量的复制 基本:传递的是值的拷贝 引用:传递的是地址的拷贝 传递参数 基本:传递的是值的拷贝 引用:传递的是地址的拷贝 3.深浅拷贝 1.为什么要拷贝? 如果是引用类型,直接复制,两个对象会共享一份数据,只要修改其中的一个对象,就会对另外一个对象造成影响 2.深浅拷贝 1.浅拷贝:只会拷贝对象的一层 使用for in对对象进行遍历 使用Object.assign()方法 2.深拷贝:每一层都进行拷贝 使用lodash进行完美拷贝 4.变量的类型检测 typeof:主要用于检测基本类型 instanceof:主要用于检测引用类型 Object.prototype.toString.call(变量/实例对象)
|