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

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

面向对象的思想是:抽象的过程--->实例化的过程

如下:

自定义构造函数--->实例化对象:
function Person(name,age,sex){
    this.name=name;
    this.age=age;
    this.sex=sex;
    this.eat=function(){
        console.log("吃榴莲");
    }
}
构造函数--->创建对象
var per=new Person("小白",18,"男");   //这个就叫构造函数创建对象
实例对象是通过构造函数来创建
实例对象会指向自己的构造函数(暂时这么理解,其实是错误的)
然后把这个对象和构造函数的结构显示出来:
console.dir(per);  //显示对象的结构
console.dir(Person); //显示构造函数的结构
实例对象 per 的构造器(构造函数)是指向 Person 的
console.log(per.constructor===Person);
console.log(per.__proto__.constructor===Person.prototype.constructor);
以上两种方式都可以进行判断
判断per实例对象是否和Person相等,如果结果是true,那么per实例对象就是通过Person来创建的,否则不是

注释:

console.dir(); 是在console中显示出该 变量 或者 对象 或者 函数 等东西的结构

构造器(constructor):其实就是构造函数的意思,实例对象中的构造器指向该实例对象是通过谁来创建的,如图:

所以该实例对象是通过Person来创建的

例子2:

//构造函数
function Ainmal(name){
    this.name=name;
}
//实例对象
var dog=new Animal("大黄");
console.log(dog); //实例对象
console.log(Animal); //构造函数的名字
//判断该实例对象是不是通过该构造函数创建的
console.log(dog.__proto__.constructor===Person);
console.log(dog.__proto__.constructor===Animal);
//判断这个对象是不是这种数据类型---以下两种方式都可以
console.log(dog.constructor===Animal);
console.log(dog instanceof Person); //使用 instanceof 关键字 ,一般推荐使用该方法进行判断

总结:

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

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

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

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

2)对象名字 instanceof 构造函数名字

尽可能的使用第二种方式来识别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

'小季同学'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值