构造函数和实例对象之间的关系

135 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

构造函数和实例对象之间的关系

面向对象的思想是实际上就是抽象的过程即实例化的过程。 下面举个例子来说明一下

//梅长苏这个人,姓名,年龄,性别, 吃饭

//自定义构造函数----->实例化对象

function Person(name,age,sex) {

    this.name=name;

    this.age=age;

    this.sex=sex;

    this.eat=function () {

    console.log("吃饭修养,为了能翻案");

    };

}
//构造函数---->创建对象

var su=new Person("梅长苏",38,"男");

//su.eat();// 吃饭修养,为了能翻案

//实例对象是通过构造函数来创建的

//可以通过以下的方式,把这个对象的结构显示出来

console.dir(su);

console.dir(Person);

image.png

// 实例对象的构造器(构造函数)

// 实例对象的构造器是指向Person的,结果是true,所以这个实例对象su就是通过Person来创建的

console.log(su.constructor==Person);//

console.log(su.__proto__.constructor==Person);

console.log(su.__proto__.constructor==Person.prototype.constructor);

image.png

//构造函数

function Animal(name) {

    this.name=name;

}

//实例对象

var dog=new Animal("大黄");

console.dir(dog);//实例对象

console.dir(Animal);//构造函数的名字

console.log(dog.__proto__.constructor==Person);

console.log(dog.__proto__.constructor==Animal);

//判断这个对象是不是这种数据类型,可以如下方法判断

console.log(dog.constructor==Animal);

console.log(dog instanceof Person);

image.png

总结:

实例对象和构造函数之间的关系:

  1. 实例对象是通过构造函数来创建的,创建的过程叫实例化

  2. 如何判断对象是不是这个数据类型?

  • 通过构造器的方式 实例对象.构造器==构造函数名字
  • 对象 instanceof 构造函数名字