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

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

  1. 实例对象是通过构造函数来创建的—创建的过程叫实例化.
  2. 如何判断对象是不是这个数据类型?
  • 通过构造器的方式 实例对象.构造器==构造函数名字
//自定义构造函数
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
  1. 构造器的弊端
//自定义构造函数
		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 来判断

猜你喜欢

转载自blog.csdn.net/weixin_45576567/article/details/102781354