一、今日学习内容
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(变量/实例对象)
|