类成员 与 实例成员

类成员属于类,而不属于具体的实例。实例成员在每个实各自独享一份

例:在下面的例子中,count代表班级人数 是类成员,name是实例成员

function Student(name){
    this.name = name;
}
Student.count = 30;
var lk = new Student("Likang");
lk.name;

Student.count

类和原型

“原型” 这个词本身源自心理学,指神话、宗教、梦境、幻想、文学中不断重复出现的意象,它源自民族记忆和原始经验的集体潜意识。所以,原型是一种抽象,代表事物表象之下的联系。用简单的话来说,就是原型描述事物与事物之间的相似性

原型继承

  • 原型可以通过描述两个事物之间的相似关系来复用代码,我们可以把这种复用代码的模式称为原型继承

  • 使用prototype属性实现对象的继承

  • function Cat(){
    
    }
    //小猫喵喵叫
    Cat.prototype.say = function(){    
      return "喵";
    }
    //小猫会爬树
    Cat.prototype.climb = function(){
      return "我会爬树";
    }
    
    function Tiger(){
    
    }
    Tiger.prototype = new Cat();
    
    //老虎的叫声和小猫不同,但老虎也会爬树
    Tiger.prototype.say = function(){
      return "嗷";
    }
    

类继承

  • 用分类和归类的认知方式去认知事物
  • class Animal{
        eat(){}
        say(){}
        climb(){}
        ...
    }
    class Cat extends Animal{
        say(){return "喵"}
    }
    class Dog extends Animal{
        say(){return "汪"}
    }
    

原型继承和类继承是两种不同的认知模式,原型继承在对象不是很多的简单应用模型里比类继承更加灵活方便。


面向对象的特点

  • 封装。把相关的信息(无论数据或方法)存储在对象中的能力。
  • 继承。由另一个类(或多个类)得来类的属性和方法的能力。
  • 多态。编写能以多种方法运行的函数或方法的能力。

results matching ""

    No results matching ""