原型(1)------------自我理解

什么是原型?

每一个js对象都和另外一个对象关联,这另外个对象就是“原型”----------js权威指南。。。。哈???这就叫原型啊???excuse me???

只要创建了一个新函数,就会为该函数创建一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法-----------js高级程序设计。。。。嗯,,,,嗯?????

来创建个对象:

function Person(){};  //创建函数

var person1=new Person;  //创建对象(实例)

关键字new后跟随一个函数调用,这里的函数称为构造函数。构造函数用以初始化一个新创建的对象。 

按照字面意思来理解,prototype 就是通过调用构造函数而创建的那个对象实例的原型对象--------------js高级程序设计。。。。

 

创建函数的时候:

  自动创建一个prototype属性,Person.prototype就是原型对象,是原型也是对象。而且这个原型对象会自动获得一个constructor(构造函数)属性,这个属性包含一个指向prototype属性所在函数的指针,通俗来讲就是原型对象的constructor属性指向创建该原型对象的函数 即:Person.prototype.constructor===Person。

 

创建实例的时候:

  当使用构造函数创建一个新实例后,该实例的内部将包含一个指针,指向构造函数的原型对象。ECMA-262 第 5 版中管这个指针叫[[Prototype]]。虽然在脚本中没有标准的方式访问[[prototype]],即没有这种方式person1.[[prototype]]。但是Firefox、 Safari 和 Chrome 在每个对象上都支持一个属性__proto__,可以通过这个属性来访问原型。而其他的浏览器对这个属性是不支持的。

  虽然无法访问[[protytpe]],但是可通过 isPrototypeOf()或者Object.getPrototypeOf()来确定对象之间是否存在这种关系。

  例:Person.prototype.isPrototypeOf(person1)  结果为true,说明person1的原型对象就是Person.prototype 

    Object.getPrototypeOf(person1)===Person.prototype  结果还是为true,说明person1原型对象就是Person.prototype

如图:

Person的prototype指向了原型对象,那么我把它理解为Person.prototype就是原型对象。实例person1和person2都包含一个内部属性[[prototype]],该属性指向Person.prototype,也就是说他们与构造函数Person没有直接的关系。

有点难理解,看了很多有关原型的解释。。。。我还是用自己的方式来理解这个原型吧!原型(2)------------自我理解

 

转载于:https://www.cnblogs.com/zjjDaily/p/8297589.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值