构造函数、原型对象以及实例对象之间的关系

在创建函数时候,内存会自动为其开辟两块空间来存放,一个存放函数本身,一个存放函数的原型对象

  • 每一个函数都有一个原型对象(prototype)
  • 每一个对象都有一个constructor属性(构造者)

1.声明在函数内部的方法,即静态方法,只能函数本身调用

  • assign(obj1,obj2):将第二个对象合并到第一个参数对象中
  • keys(obj):获取所有属性名的集合
  • values(obj):获取所有属性值的集合
  • defineProperty(obj,'key',{ }):定义属性

2.在原型对象中有一些属性和方法,也就是所谓的非静态方法,声明在函数的原型对象中,是公用的,函数原型对象本身和实例对象均可以调用

eg:函数原型对象本身调用

Object.prototype.constructor           ---->返回值结果为object

eg:实例对象调用

obj.constructor    ---->返回值也为object类

3.obj实例中并没有写toString()和valueOf()方法,可是它可以调用,是因为obj实例可以继承Object构造函数原型对象的方法来使用。

4.如图所示

若将Object构造函数比作母亲,其产生的原型对象比作父亲,实例是儿子(由母亲产生也就是OBject构造函数,obj由new Object()产生),这样理解,儿子可以用父亲所拥有的东西。儿子什么都没有,但是儿子可以问父亲要。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值