前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Javascript原型,原型链?有什么特点?

Javascript原型,原型链?有什么特点?

作者头像
TimothyJia
发布2022-05-05 16:13:56
6830
发布2022-05-05 16:13:56
举报

如何: js中继承都是通过原型对象实现的

    什么是原型对象: 集中存储同一类型的所有子对象,共用成员的父对象

    如何:

     创建: 不用创建,买一赠一

       每创建一个构造函数,都附赠一个原型对象

     继承: 在创建子对象时,new的第2步自动设置子对象继承构造函数的原型对象

     访问成员: 优先访问私有成员

              自己没有,就去父对象(原型对象)中查找

     将成员添加到原型对象中:

      构造函数.prototype.成员=值

  私有属性和公有属性:

   私有属性: 保存在当前对象本地,仅归当前对象独有的属性

   公有属性: 保存在父对象中,所有子对象共有的属性

   读取属性值: 子对象.属性

   修改属性值:  私有属性,必须通过子对象自己修改

                 公有属性,只能用原型对象修改!

 原型链:

  什么是: 由多级父对象逐级继承,形成的链式结构,通过__proto__实现子类共用原型链上的属性和方法,向上查找

原型链的运行机制:

1. 所有的函数数据类型都天生自带一个属性:prototype(原型),这个属性的值是一个对象,浏览器会默认给它开辟一个堆内存

2. 在浏览器给prototype开辟的堆内存中有一个天生自带的属性:constructor,这个属性存储的值是当前函数本身

3. 每一个对象都有一个__proto__的属性,这个属性指向当前实例所属类的prototype(如果不能确定它是谁的实例,都是Object的实例)

代码语言:javascript
复制
function Student(sname,sage){
    this.sname=sname;
    this.sage=sage;
}
Student.prototype.intr=function(){
    console.log("I'm "+this.sname+", I'm "+this.sage);
}
var lilei=new Student("Li Lei",11);
var hmm=new Student("Han Meimei",12);
console.log(lilei);
console.log(hmm);
lilei.intr();
hmm.intr();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档