加入收藏 | 设为首页 | 会员中心 | 我要投稿 莆田站长网 (https://www.0594zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

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

发布时间:2019-03-05 10:12:52 所属栏目:优化 来源:考拉阅读前端团队
导读:副标题#e# 一. 普通对象与函数对象 JavaScript 中,万物皆对象!但对象也是有区别的。分为普通对象和函数对象,Object 、Function 是 JS 自带的函数对象。下面举例说明 varo1={}; varo2=newObject(); varo3=newf1(); functionf1(){}; varf2=function(){}; v

其中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

(编辑:莆田站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读