JavaScript 原型 prototype

JavaScript 原型 prototype


构造函数原型 prototype

  • 构造函数通过原型分配的函数是所有对象所共享的

  • JavaScript 规定 每个构造函数都有一个 prototype 属性 指向另一个对象。注意这个 prototype 就是一个对象,这个对象的所有属性和方法都会被构造函数所拥有。

  • 我们可以把那些不变的方法 直接定义在 prototype 对象上 这样所有对象的实例就可以共享这些方法。

  • 原型就是一个对象,我们也称为 prototype 为对象

  • 原型的作用就是共享方法。


对象原型 __proto__

  • 对象都会有一个属性 __proto__ 指向构造函数的 prototype 原型对象,之所以我们对象可以使用构造函数 prototype 原型对象的属性和方法,就是因为对象有 __proto__原型的存在。

  • __proto__ 对象原型和原型对象 prototype 是等价的

  • __proto__对象原型的意义就在于为对象的查找机制提供一个方向,或者说一条路线,但是他是一个非标准,因此在实际开发中,不可以使用这个属性,他只是内部向原型对象 prototype。

  • __proto__ 对象原型

  • prototype 原型对象


constructor 构造函数

  • 对象原型(__proto__)和构造函数( prototype )原型对象里面都有一个属性constructor属性,constructor我们称为构造函数,因为他指向会构造函数本身。

  • constructor 主要用于记录该对象引用那个构造函数,它可以让原型对象重新指向原来的构造函数


成员的查找机制

  1. 当访问一个对象的属性( 包括方法 )时,首先查找这个对象自身有没有该属性。

  2. 如果没有就查找它的原型(也就是__proto__指向的 prototype 原型对象)。

  3. 如果还没有就查找原型对象的原型( Object 的原型对象 )。

  4. 以此类推一直找到 Object 为止( null )

  5. __proto__对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条路线


扩展内置对象

可以通过原型对象,对原来的内置对象进行扩展自定义的方法,比如给对象增加自定义求偶数和的功能。

注意:数组和字符内置对象不能给原型对象覆盖操作 Array.prototype = {} , 只能是 Array.prototype.xxx = function(){} 的方法。


如果该文章能帮到你的话 麻烦点个赞 谢谢啦~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值