实例对象和构造函数之间的关系
- 实例对象是通过构造函数来创建的—创建的过程叫实例化.
- 如何判断对象是不是这个数据类型?
- 通过构造器的方式 实例对象.构造器==构造函数名字
//自定义构造函数
function Person(name,age) {
this.name=name;
this.age=age;
}
//实例化对象
var per=new Person("小明",15);
//通过构造器判断对象是不是属于Person的实例
console.dir(per.constructor===Person);//true
- 对象 instanceof 构造函数名字
//自定义构造函数
function Person(name,age) {
this.name=name;
this.age=age;
}
//实例化对象
var per=new Person("小明",15);
//通过instanceof判断对象是不是属于Person的实例
console.dir(per instanceof Person);//true
- 构造器的弊端
//自定义构造函数
function Person(name,age) {
this.name=name;
this.age=age;
}
function Student(sex) {
this.sex=sex;
}
//改变原型指向
Student.prototype=new Person();
//实例化对象
var stu=new Student();
//通过构造器判断stu的指向是不是Student
console.dir(stu.constructor==Student);//false
console.dir(stu instanceof Student);//true
总结:
继承会改变constructor的指向,所以不推荐使用constructor构造器来判断对象是不是某个构造函数的实例,推荐使用instanceof 来判断