设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

【前端基础进阶】JS原型、原型链、对象详解(2)

发布时间:2019-02-28 01:00 所属栏目:21 来源:考拉阅读前端团队
导读:其中add是Function对象的实例。而Function的原型对象同时又是Object原型的实例。这样就构成了一条原型链。原型链的访问,其实跟作用域链有很大的相似之处,他们都是一次单向的查找过程。因此实例对象能够通过原型链

其中add是Function对象的实例。而Function的原型对象同时又是Object原型的实例。这样就构成了一条原型链。原型链的访问,其实跟作用域链有很大的相似之处,他们都是一次单向的查找过程。因此实例对象能够通过原型链,访问到处于原型链上对象的所有属性与方法。这也是foo最终能够访问到处于Object原型对象上的toString方法的原因。

基于原型链的特性,我们可以很轻松的实现继承。

具体基本知识了解后,我们分析下图

第一

先从实例add()分析

实例add() 为 Function的实例

所以

add()的__proto__指向其构造函数的原型即 Function.prototype

  1. var add = function () {}  
  2. add.__proto__ === Function.prototype//true 

特别注意 构造函数Funciton的__proto__指向自身的Function.prototype

  1. Function.__proto__ === Function.prototype//true 

所以构造函数Function的__proto__和prototype都指向Function.prototype

第二

因为Function和Object都是js自带函数

且 Object 也是由 new Function创建而来

  1. typeof Function  
  2. "function"  
  3. typeof Object  
  4. "function" 

所以 Object的__proto__指向Function的原型对象即 Function.prototype

  1. Object.__proto__ === Function.prototype  
  2. true 

因此 Object 的 prototype 和 Function.prototype的 __proto__都指向 Object.prototype

第三

Object.prototype被称为原型链的E端,因为它的__proto__为null

【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读