js原型链详细解释

说到原型链不得不提到构造函数,任何一个对象都是由构造函数new出来的,其构造函数通过new来使用,作用是实例化对象。

原型:任何一个函数都有一个prototype属性。

下图就是构造函数,实例化,原型的关系图。

1.构造函数通过.prototype找到原型上的属性和方法。

2.实例化的对象能通过__proto__找到构造函数的原型的属性和方法。

3.这里特别注意实例化的对象是不能访问构造函数里面的属性和方法的(这里实例化对象只能访问它原型上的属性和方法)

function Person(name,age){
    this.name = name;
    this.age = age;
}

var p = new Person('张三','12')

Person.prototype.color='red';
Person.job='前端';

consoloe.log(p.name) //张三
consoloe.log(p.color) //red
consoloe.log(p.job) //undefined

原型链:

任何一个对象都有一个prototype属性,有prototype属性就有__proto__对象,(这里的__proto__就是原型),而__proto__对象又会有__proto__,这样一环一环就形成了原型链。

说白点就是__proto__相当于父亲,那么它是不是有爷爷,太爷爷,这样就形成了一个链式的结构就叫做原型链。

下面这个红框标出来的就是它的原型链

这个原型链简单理解就是,实例p的母亲是Person构造函数,父亲是Person.prototype。而Person.prototype的母亲就是Object构造函数,父亲就是Object.prototype,在往上就是null了。实例p最终可以使用原型链上的一切属性和方法,就是它能继承它父亲,父亲的父亲的财产(属性和方法),但母亲的,母亲的母亲的是不行的,(通俗的就是母亲只负责生,父亲负责养)

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值