小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
构造函数和实例对象之间的关系
面向对象的思想是实际上就是抽象的过程即实例化的过程。 下面举个例子来说明一下
//梅长苏这个人,姓名,年龄,性别, 吃饭
//自定义构造函数----->实例化对象
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);
// 实例对象的构造器(构造函数)
// 实例对象的构造器是指向Person的,结果是true,所以这个实例对象su就是通过Person来创建的
console.log(su.constructor==Person);//
console.log(su.__proto__.constructor==Person);
console.log(su.__proto__.constructor==Person.prototype.constructor);
//构造函数
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);
总结:
实例对象和构造函数之间的关系:
-
实例对象是通过构造函数来创建的,创建的过程叫实例化
-
如何判断对象是不是这个数据类型?
- 通过构造器的方式 实例对象.构造器==构造函数名字
- 对象 instanceof 构造函数名字