乐趣区

关于oop:面向对象

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. 混合式继承: 混合式继承 父亲和母亲一起给孩子实现继承。母亲构造函数实现的继承很灵便,属性的值能够依据用户传递的实参随时扭转,因而,个别把一些值可能互不雷同的属性写在构造函数中实现继承。

父亲原型 实现的继承就很固定。个别不能扭转,因而咱们会把一些值不变的属性放在原型中实现继承

个别举荐混合式继承
退出移动版