秒懂Js原型

再讲js之前,必须先了解Object和Function。

Object和Function都作为JS的自带函数,Object继承自己,Function继承自己,Object和Function互相是继承对方,也就是说Object和Function都既是函数也是对象。

普通对象和函数对象

JavaScript中万物皆对象,但是对象之间是有区别的,分为函数对象和普通对象

凡是通过new Function创建的对象但是函数对象,其他都是普通对象(通常都是Object创建的)

原型(prototype)

每个函数都有一个属性prototype。这个prototype的属性值是一个对象(属性的集合),它默认只有一个叫做constructor的属性,它指向这个函数的本身。

SuperType是一个函数,右侧的方框就是他的原型

原型(prototype)既然作为对象,除了constructor外,还可以自定义许多属性:

 

 rototype原型只能通过函数调用,自定义函数的原型指向它自己(对象没有原型)

constructor(构造器)(在原型对象中)

在JavaScript中,每个具有原型的对象都会自动获得得constructor属性。除了

argumentsEnumeratorErrorGlobalMathRegExp等一些特殊对象之外,其他所有的JavaScript内置对象都具备constructor属性。例如:ArrayBooleanDateFunctionNumberObject

constructor返回创建实例对象时构造函数的引用。此属性的值是对函数本身的引用,而不是一个包含函数名称的字符串

隐式原型(__proto__)

每个JavaScript对象(除了null)都具备隐式原型(_proto_)这是一个访问器(即getter函数和setter函数),通过它可以访问到对象的内部[prototype](一个对象或null)

 

 原型链

因为每个对象和原型(prototype)都有隐式原型,对象的隐式原型指向创建该对象的构造函数的原型对象,而父的原型又指向父的父,这种原型层层连接起来的就构成了原型链。

 蓝色的线就是原型链。null 表示“没有对象”,即该处不应该有值。这句话也意味着 Object.prototype 没有原型

附上一张全解图:

 总结:

Function的原型和隐式原型都指向它自己

自定义函数的隐式原型指向上一级的原型,最终都指向Function.prototype

构造函数的隐式原型最终都指向Object.portotype

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值