数据类型,原型与原型链,手写深拷贝

一.typeof能判断哪些类型

typeof能识别值类型和函数,判断是否是 引用类型(不可再细分)

值类型
在这里插入图片描述
函数和引用类型
在这里插入图片描述
引用类型:除了值类型和函数,其余的都是引用类型,打印出来的是【对象】

二.值类型和引用类型的区别(变量类型)

值类型:不会相互影响,个论个的,栈中存储 ,从上往下排列,直接赋值,占用空间少
在这里插入图片描述

常见的值类型:

1.字符串
2.数值
3.boolean
4.symbol
5.undefined(let定义 )

引用类型:相会影响,b赋值,a也会随之b改变,堆中存储,从下往上排列,堆指的是内存地址,占用空间大,不好管理
在这里插入图片描述

常见的引用类型:

1.objet 对象
2.数组 Array
3.null 特殊引用类型,指针指向为空地址
4.函数 特殊引用类型,不用于存储数据,函数是可执行代码,没有拷贝,复制函数一说,定义好,直接执行

三.变量计算–类型转换

1.字符串拼接
**注意:**数字+'字符串’的拼接,不是加法,而是字符串拼接,返回的也是字符串 如果想变成数字 parseInt parseFloat number 转换

何时使用 === 何时使用==(区别)

在这里插入图片描述
注意: 除了==null之外,其他都一律用 ===,==会做隐式类型转换,尝试相等

2.== 等号运算符
在这里插入图片描述
3.if语句和逻辑运输
在这里插入图片描述
falsely变量:
在这里插入图片描述
注意:两步非运算为true就是truely变量,两步(非运算)为false就是falsely变量

**if语句:**判断的就是truely变量和falsely变量,如果判断是truely就走if语句,否则不走if语句
在这里插入图片描述
逻辑变量:

在这里插入图片描述
注意:0&&10,返回的是0,因为0是一个falsely变量,直接返回
’abc’|| ’ ',返回是truely变量,返回的是’abc‘直接返回
!取反就行拉

五.手写深拷贝(递归)

在这里插入图片描述

六.=、===、==区别

在这里插入图片描述

七.原型和原型链

1.class和继承

Es6class:
es6中引入了class类的概念,通过class关键字定义类。
定义方法不能使用function关键字
方法之间不能用逗号隔开,不然会发生报错
class定义的类实质上是一个函数,指向自身相关联的构造函数,可以理解为class类是构造函数的另一种写法
在通过class定义的类中存在prototype属性的。class定义的类中的方法都被保存在prototype中。
可以通过Object.assign方法动态给对象增加方法。
constructor方法是类的构造函数的默认方法,通过new命令生成对象实例时,自动调用该方法
constructor方法默认返回实例对象this,但是也可以指定constructor方法返回一个全新的对象,让返回的实例对象不是该类的实例
在constructor内部定义的属性可以称为实例属性,constructor外声明的属性都是定义在原型上的,可以称为原型属性。然后通过hasOwnProperty()函数用于判断属性是否是实例属性,返回值为布尔值。然后通过in操作符可以判断属性是否在类中。结合这两个方法可以判断该属性时在类的实例上还是原型上。
class不存在变量提升,所以需要先定义再使用。因为ES6不会把类的声明提升到代码头部,但是ES5就不一样,ES5存在变量提升,可以先使用,然后再定义。
在这里插入图片描述
Es6继承:

代码量少,简单易懂
通过class关键字定义一个类,子类通过extends关键字来继承父类的属性和方法
子类的constructor方法中通过super关键字继承父类的属性
在子类的原型上通过super关键字来继承父类的方法

在这里插入图片描述
2.类型判断-instanceof

原型

  1. 每个函数都有一个prototype属性,被称为显示原型
  2. 每个实例对象都会有_ _proto_ _属性,其被称为隐式原型,每一个实例对象的隐式原型_ _proto_ _属性指向自身构造函数的显式原型prototype
  3. 每个prototype原型都有一个constructor属性,指向它关联的构造函数

原型链:
获取对象属性时,如果对象本身没有这个属性,那就会去他的原型__proto__上去找,如果还查不到,就去找原型的原型,一直找到最顶层(Object.prototype)为止。Object.prototype对象也有__proto__属性值为null。

instanceof

instanceof是一个用于判断引用类型属于哪个构造函数的方法,这一个方法也能很好地体现原型链到底是个什么东西,因此这里放到一起讲。
xiaoming instanceof Student 的判断逻辑:
xiaoming的_proto_一层一层往上,能否对应到Student.prototype
通过这种方式能够很准确地判断出一个参数到底是什么类型。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值