面向对象的特性

JavaScript面向对象的特性

1. 封装性

对象是将数据与功能组合到一起, 即封装

  1. js 对象就是 键值对的集合
    • 键值如果是数据( 基本数据, 复合数据, 空数据 ), 就称为属性
    • 如果键值是函数, 那么就称为方法
  2. 对象就是将属性与方法封装起来
  3. 方法是将过程封装起来

2. 继承性

所谓继承就是自己没有, 别人有,拿过来为自己所用, 并成为自己的东西

2.1. 传统继承基于模板

子类可以使用从父类继承的属性和方法。

class Person {
 string name;
 int age;
}

class Student : Person {
}
var stu = new Student();
stu.name

即:让某个类型的对象获得另一个类型的对象的属性的方法

2.2. js 继承基于对象

在JavaScript中,继承就是当前对象可以使用其他对象的方法和属性。

js继承实现举例:混入(mix)

function mix ( o1, o2 ) {
    for ( var k in o2 ) {
        o1[ k ] = o2[ k ];
    }
}

3. 多态性(基于强类型)只做了解

把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

动物 animal = new 子类(); // 子类:麻雀、狗、猫、猪、狐狸...
动物 animal = new 狗();
animal.叫();