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

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

  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 来判断

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值