专栏首页大闲人柴毛毛稳扎稳打JS——“继承”

稳扎稳打JS——“继承”

JS使用原型链实现“继承”

  • JS是“基于对象”的语言,因此没有继承。但可以使用JS的特性实现“继承”——原型链。
  • JS使用_proto_属性构造原型链,如 p._proto_ ——> Perosn.prototype Perosn.prototype._proto_ ——> Object.prototype Person._proto_ ——> Function.prototype Function.prototype._proto_ ——> Object.prototype
  • 若当前对象中没有要访问的属性,JS就会自动沿着原型链向上查找,若在某一个对象的prototype中找到相应的属性,则访问它;若直到原型链顶端也没找到,则返回undifined。
//定义构造函数Person
var Person = function(name, age){
    this.name = name;
    this.age = age;
}
Person.prototype.school = "NJUPT";
var p = new Person("chaimm",23);
p.school;

当访问p.school时,JS会首先在对象p的属性中查找,若不存在,则通过_proto_属性向上查找,当发现Person.prototype属性中存在school时,则查找成功。否则,继续沿着原型链向上查找。

  • 覆盖“父类”属性
var p = new Person("chaimm",23);
p.school = "NJU";
alert(p.school);

按照原型链查找次序,首先从当前对象的属性域查找,若找到school,则输出结果。从而实现面向对象中继承的效果。

  • 为“父类”添加新的属性
Person.prototype.hobby = "LOL";

可以为任何“父类”添加任何属性。

  • 使用hasOwnProperty函数可判断某属性是否是本对象的属性
for(item in p){
    if(p.hasOwnProperty(item)){
        console.log(item);
    }
}

hasOwnProperty是Object.prototype中的函数,因此所有对象都可以使用。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 稳扎稳打JavaScript(三)——创建对象的几种方式

    有了前面两篇文章的基础后,我们来谈一谈在JS中创建对象的几种方式。 建议大家先预习下先前的两篇博客: 稳扎稳打JavaScript(一)——作用域链 ...

    大闲人柴毛毛
  • 稳扎稳打JS——“对象”

    一切皆“对象” JS中一切皆“对象” “对象”是属性的集合,而属性又是对象。既然属性又是对象,那么一个对象的属性也可以拥有属性,如: //定义一个函数getN...

    大闲人柴毛毛
  • 三分钟理解“享元模式”——设计模式轻松掌握

    享原模式的官方定义: 运用共享技术有效地支持大量细粒度的对象。 大白话讲: 一个类它可能生成好多对象,但这些对象根据属性值的不同一共分成N类,每种类型中属性值都...

    大闲人柴毛毛
  • JavaScript原型、原型链及原型链污染

    因为在CTF中时常也会考察原型链污染的问题,以前也一直让我捉襟见肘,一直没有系统的学习了解过JS原型的这些相关概念,因此写下本文,通过不断总结大佬的文章,写出自...

    字节脉搏实验室
  • 微信小程序从零开始开发步骤(四)自定义分享的功能

    祈澈菇凉
  • vue-spa项目在github实现配置展示

    也许你肯定熟悉github-page ,并知道github支持自定义域名,前提是你新建了这样的一个同名git项目,名称是你的git用户名 ,格式是这样的name...

    RobinsonZhang
  • python修饰器的特殊用法

    最基本的修饰器包括了无参数的修饰器和带参数的修饰器,这两种修饰器都是针对函数的,讲解的博客已经很多了,就不再赘述了,这里重点讲下修饰器的几种特殊用法。

    用户2936342
  • 图解 Java 中的数据结构及原理,傻瓜也能看懂!

    最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程。

    Java技术栈
  • 【JDK1.8】JDK1.8集合源码阅读——LinkedList

    joemsu
  • 动图+源码+总结:演示JDK8 中的数据结构执行过程及原理

    最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程。

    搜云库技术团队

扫码关注云+社区

领取腾讯云代金券