原型和原型链

参考:https://www.jianshu.com/p/ddaa5179cda6

参考:https://www.cnblogs.com/duyingxuan/p/6474163.html

每当定义一个函数数据类型(普通函数、类)时候,都会天生自带一个prototype属性,这个属性指向函数的原型对象,并且这个属性是一个对象数据类型的值;对象之间的继承关系,在JavaScript中是通过prototype对象指向父类对象,直到指向Object对象为止,这样就形成了一个原型指向的链条,专业术语称之为原型链,通过原型链指针_proto_可以向上查找原型链中的原型直到null。
除了基本对象Object(Object.prototype._proto_==null)外其他所有的对象都有原型

function Foo(){}
var f=new Foo()

f._proto_==Foo.prototype
Foo.prototype._proto_==Object.prototype
Object.prototype._proto_==null

f._proto_.constructor==Foo.prototype.constructor==Foo

Foo._proto_==Function.prototype 
Function.prototype._proto_==Object.prototype 
Object.prototype ._proto_==null

var obj=new Object()
obj._proto_==Object.prototype
Object.prototype._proto_==null


所有JS内置构造器和自定义函数都是Function构造器的原型
所有的构造器也都是一个普通JS对象

Number.__proto__ === Function.prototype  
Boolean.__proto__ === Function.prototype 
String.__proto__ === Function.prototype 
Object.__proto__ === Function.prototype  
Function.__proto__ === Function.prototype 
Array.__proto__ === Function.prototype   
RegExp.__proto__ === Function.prototype 
Error.__proto__ === Function.prototype   
Date.__proto__ === Function.prototype    
Math.__proto__ === Object.prototype  
JSON.__proto__ === Object.prototype 

Function.prototype._proto_==Object.prototype
Object.prototype._proto_==null

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值