原型链的学习

原型链

显示原型和隐式原型:
● prototype是原型对象(显式原型)
● __proto__是对象原型(隐式原型)

代码体验:

var person = new Object()
person.name = '安安'
person.age = 23
console.log(person.__proto__ === Object.prototype) // true 

发现问题: person.__proto__指向Object.prototype, 所以__proto__属性是起指针作用

图解:
原型链图片示意

拓展理解:
● 构造函数才有prototype(原型对象)
● 有prototype的才是构造函数,所以箭头函数不能用来当构造函数
● Object是最大的父类, 下面有很多子类(Function,Array,String…)
● class可以理解成一个Function,它的底层就是Function.prototype挂载,详细点的话可以看手写一个class相关文章

问题:

  1. Foo.prototype = {name:“安安”,age:23} 能 new Foo()实例吗?
    解:
    代码示例

  2. 什么是原型链?(面试题)
    思路:
    ● 原型对象和对象原型是什么
    ● 举一个原型链的例子
    解:
    a. prototype是原型对象(显式原型);__proto__是对象原型(隐式原型)。
    b. 举个简单的例子普通的function的原型链
    ■ function.prototype 的 __ proto __ 指向 Function.prototype
    ■ Function.prototype 的 __ proto __ 指向 Object.prototype
    ■ Object.prototype 的 __ proto __ 最终指向指向 null

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值