javascript-原型和原型链

js的对象

        js中有两种对象,普通对象和函数对象

        所有对象上都有__proto__(隐式原型)

        函数对象上有prototype(显式原型)

__proto__(隐式原型)

        __proto__对象有两个属性constructor和__proto__

prototype(显式原型)

        prototype对象上有一个默认的constructor属性,用于记录实例是由那个构造函数创建

* 两个准则

  1. Person.prototype.constructor == Person //构造函数的显式原型中的constructor指向构造函数本身
  2. person.__proto__ == Person.prototype //实例对象的隐式原型 指向 其构造函数的显式原型

原型链

        当访问对象的某一属性时,首先在对象本身上找;

        若没有找到,就在对象属性上的__proto__(隐式原型),也就是该对象的构造函数的                        prototype(显示原型)上找;

        若还没有找到,就在该对象的构造函数的prototype的__proto__上找;

        这样一层一层找上去,直到到null还没有找到,则返回undefined

        上述过程,就会形成一个链式结构,称为原型链

* Object.prototype.__proto__ = null; 

该对象的构造函数的prototype的__proto__是什么?

        prototype是原型对象,既然是对象也就会有对应的构造函数,js中对象的构造函数是Object()。

        所以Parent.prototype.__proto__ == Object.prototype

函数也是一种对象,同时拥有prototype和__proto__

        Person.__proto__ == Function.prototype

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值