原型链总结

原型链总结一下,整理思路,进步进步
  1. 1.
// A)首先先看这部分代码
 console.log(Object.__proto__ ===Function.prototype);//true
 console.log(Number.__proto__ === Object.__proto__);//true
 console.log(String.__proto__ === Object.__proto__);//true
 console.log(Boolean.__proto__ === Object.__proto__);//true
 console.log(Date.__proto__ === Object.__proto__);//true
 console.log(Array.__proto__ === Object.__proto__);//true
  • 说明JS内置对象的构造函数的proto属性都指向了Function.prototype。
    这里写图片描述
    1. 2.
//B) 在看看这部分
console.log(Number.prototype ===Object.prototype);//false 
console.log(Number.prototype.__proto__===Object.prototype)//true
console.log(String.prototype===Object.prototype)//false  
console.log(String.prototype.__proto__===Object.prototype);//true
console.log(Number.prototype === String.prototype);//false
  • 内置对象(除Funciton,Object)构造函数的prototype不指向同一个,但是它们prototype的原型又指向了相同的一个 —— Object.prototype.如图

这里写图片描述

  1. 3.
//C) 
 console.log(Function.prototype===Function.__proto__);//true  
 console.log(Function.prototype.__proto__===Object.prototype);//true
 console.log(Object.prototype.__proto__ === null);//true
  • Function.prototype和Function._ _ proto _ _ 指向的是同一个,而Function.prototype的原型又指向了Object.prototype,Object.prototype的原型指向了null.但并不能说null就是原型链的结束,因为没有Function就没有构造函数,也就没有了构造函数的prototype对象
  • 如图

这里写图片描述

4.

//D)
 console.log(fnA.__proto__ ===Object.__proto__);//true       
 console.log(fnA.prototype.__proto__ === Function.prototype);//false               
 console.log(fnA.prototype.__proto__ === Object.prototype);//true
  • 自定义构造函数fnA().fnA._ _ proto _ _ 和Object._ _ proto _ _ 指向同一个,也就是指向了Function.prototype(或者说Function._ _ proto _ _,因为是同一个对象)。而fnA.prototype的原型指向的不是Function.prototype而是Object.prototype。这可能是我们以前的一大误区。
  • 如图

这里写图片描述
5.

//E)
 console.log(b.__proto__ === fnA.prototype);//true           
 console.log(b.__proto__.__proto__ === Function.prototype);//false
 console.log(b.__proto__.__proto__ === Object.prototype);//true
  • b._ _ proto _ _ === fnA.prototype这谁都知道(小孩都骗不了).但衍生出来的则是b._ _ proto_ . _ proto _ _指向了Object.prototype。这是因为第四部分所说,fnA.prototype指向的是Object.prototype
  • 如图
    这里写图片描述
    1. 6.
//F)
console.log(c.__proto__ === Object.prototype);//true             
console.log(d.__proto__ === Object.prototype);//true
  • c为{},d为 new Object(); 它们的构造函数? Object()! 也就是说它们的_ _ proto _ _ 属性就指向了Object.prototype
  • 如图
    这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值