原型继承

 

  • 原型对象
  • 任何函数都具有一个 prototype 属性,该属性是一个对象

  • 构造函数的 prototype 对象默认都有一个 constructor 属性,指向 prototype 对象所在函数

  • 通过构造函数得到的实例对象内部会包含一个指向构造函数的 prototype 对象的指针 __proto__

  • 所有实例都直接或间接继承了原型对象的成员

  • 原型链
  • 每当代码读取某个对象的某个属性时,都会执行一次搜索,目标是具有给定名字的属性

    • 搜索首先从对象实例本身开始

    • 如果在实例中找到了具有给定名字的属性,则返回该属性的值

    • 如果没有找到,则继续搜索指针指向的原型对象,在原型对象中查找具有给定名字的属性

    • 如果在原型对象中找到了这个属性,则返回该属性的值

    也就是说,在我们调用 person1.sayName() 的时候,会先后执行两次搜索:

    • 首先,解析器会问:“实例 person1 有 sayName 属性吗?”答:“没有。

    • ”然后,它继续搜索,再问:“ person1 的原型有 sayName 属性吗?”答:“有。

    • ”于是,它就读取那个保存在原型对象中的函数。

    • 当我们调用 person2.sayName() 时,将会重现相同的搜索过程,得到相同的结果。

    而这正是多个对象实例共享原型所保存的属性和方法的基本原理。

  • 原型继承

转载于:https://www.cnblogs.com/M-right/p/9483948.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值