Js 是一门弱类型语言
Java、c、c++、c#、php 都是强类型语言
在强类型语言中有一个‘类’的概念,是用来实现继承的。
强类型语言:三种个性
1. 多态性 :在强类型语言中,一个变量存在多种状态。在不同的上下文代码中,变量的模式能够不同(理解)
2. 继承性 :在强类型语言中,会存在类的概念,类有父级和子级关系(相似于 js 中的函数),子级类能够齐全继承父级类中的所有属性
(1) 继承就是完完全全领有
3. 封装 :封装函数
Js 在诞生初期没有继承 因为 js 中没有类
起初人们就创立出了面向对象编程
1. js 中的继承
(1) 原型
① 原型是基于对象呈现的
② 定义:原型就是某一个对象中__proto__非标准属性指向的一个对象
③ __proto__非标准属性 是每一个对象中的默认属性,不须要手动编写,主动就会有这个属性,这个属性的属性值就是这个对象的原型
④ 原型:其实也是一个对象,也会有各种属性,这些属性,会齐全继承给原型的对象
⑤ 对象.__proto__就是以后对象的原型
(2) 对象的申明形式
① new 关键字申明
② 字面量申明
③ 由以上两种办法可知
1) Js 中申明对象能够间接申明,也能够通过构造函数来申明
2) 这里,咱们次要探讨一下通过构造函数申明对象
(3) 构造函数
① 构造函数能够实例化对象,这个实例化的对象有原型
② 实例化的对象原型也是 对象名.__proto__
③ 对象名.__proto__(原型) 和构造函数之间的关系:
1) 原型中会有一个属性 constructor,这个属性的属性值就是对象的构造函数
a. 原型.constructor=== 构造函数
b. 构造函数.prototype=== 原型
构造函数和工厂函数
构造函数中最初会隐式返回绑定好属性的空对象,如果用户没有写返回值或者返回值是值类型数据,那么,构造函数就会隐式返回。
如果用户写了返回值为援用类型,构造函数就不会隐式返回,而是返回用户写入的返回值
对象的创立办法
1. 间接创建对象
(1) 长处:简略,明了
(2) 毛病:当须要创立大量对象的时候,会造成大量的工作量 =-=
2. 构造函数创建对象
(1) 长处:能够很不便的创立大量对象
(2) 毛病:一旦遗记写 new 就会造成全局变量的净化
3. 工厂函数创建对象
(1) 长处:能够大量创建对象,并且既能够写 new,也能够不写 new
(2) 毛病:做法比较复杂
当初咱们创建对象个别应用构造函数,因为构造函数创立进去的对象类型是最强的
继承的形式
1. 构造函数继承
2. 原型继承
3. 混合式继承: 混合式继承 父亲和母亲一起给孩子实现继承。母亲构造函数实现的继承很灵便,属性的值能够依据用户传递的实参随时扭转,因而,个别把一些值可能互不雷同的属性写在构造函数中实现继承。
父亲原型 实现的继承就很固定。个别不能扭转,因而咱们会把一些值不变的属性放在原型中实现继承