类和实例

类与实例是“抽象”和“具体”的关系,比如:“大楼”和“火星时代大厦”

每个对象都由类定义,可以把类看做对象的配方。类不仅要定义对象的接口(开发者访问的属性和方法),还要定义对象的内部工作(使属性和方法发挥作用的代码)。编译器和解释器都根据类的说明创建对象。

实例

程序使用类创建对象时,生成的对象叫做实例。一个类可以产生多个实例,没有个数限制。每个实例处理一组独立的数据,由类创建实例的过程称为实例化。


类的创建

  • 用“工厂方法”创建类

  • function PersonFactory(name,age,sex,isHealth){
        var person = new Object();
        person.name = name;
        person.age = age;
        person.sex = sex;
        person.isHealth = isHealth;
        return person;
    }
    
    //实例化对象
    var person_zzy = PersonFactory("章子怡",34,"女",true);
    var person_hxm = PersonFactory("黄晓明",40,"男",false);
    //简写方式
    function PersonFactory(name,age,sex,isHealth){
        return {
          name:name,
          age:age,
          sex:sex,
          isHealth:isHealth,
      };
    }
    
  • 用构造函数方式创建类


  //创建person类
  var person = function(name,age,sex,isHealth){
      this.name = name;
      this.age = age;
      this.sex = sex;
      this.isHealth = isHealth;

      this.sayName = function(){
          console.log("my name is:" + this.name);
      }
  }
  //由person类生成实例
  var person_zzy = new person("章子怡",34,"女",true);
  var person_hxm = new person("黄晓明",40,"男",false);
  • 用prototype方式创建类

    prototype 属性使您有能力向对象添加属性和方法。

  • //定义一个空的类person
    function person(){}
    
    //用prototype方式类添加属性和方法,同时实例化
    var person_zzy = new person();
    person.prototype.name = null;
    person.prototype.sex = null;
    person.prototype.age = null;
    person.prototype.sayName = function(){
        console.log("my name is:"+this.name);
    }
    
    person_zzy.name = "章子怡";
    person_zzy.sex = "女";
    person_zzy.age = 34;
    
  • 实例与对象是一回事,所谓实例化,就是类生成对象的过程

  • this是javasctipt中的一个关键字,代表当前对象


instanceof运算符

instanceof运算符可以用来判断某个构造函数的prototype属性是否存在另外一个要检测对象的原型链上

A instanceof B:检测 B.prototype属性是否存在于参数A的原型链上

  function person(){
  }
  var person_zzy = new person();
  console.log(person_zzy instanceof person);    //true

results matching ""

    No results matching ""