资讯专栏INFORMATION COLUMN

JavaScript反射机制与继承:概念

阿罗 / 480人阅读

摘要:反射反射机制是指程序可以访问检测和修改它本身状态或行为的一种能力。可以利用反射机制继承。中没有继承机制,但是可以对某一个类的成员通过反射机制逐一复制,然后再修改需要覆盖的成员,就可以达到继承的效果。

反射

反射机制是指程序可以访问、检测和修改它本身状态或行为的一种能力。对于JavaScript,简单来说,就是对类的成员进行修改等操作。

js可以通过for(...in...)来实现反射。

继承

JavaScript中没有专门的机制来实现类的继承,但可以通过复制一个类的prototype到另外一个类来实现继承。

function Helloclass()
{
     //构造函数
}
function Hellosubclass()
{
     //构造函数
}

Hellosubclass.prototype = Helloclass.prototype;
Hellosubclass.prototype.Propertys = "name";
Hellosubclass.prototype.Methods = function()
{
     //方法示例代码
}
var obj = new Hellosubclass();

以上并非严格的继承,两个类是同一prototype的引用,HelloclassHellosubclass共享同一个prototype,重写一个类的成员或方法会影响另一个。

可以利用反射机制继承。利用for(...in...)语句枚举出所有基类prototype成员,并将其赋值给prototype对象。进一步,可以为每个类添加一个共有的方法用来实现类的继承:

function.prototype.inherit=function(baseClass)
{
     for(var p in baseClass.prototype)
     {
          this.prototype[p] = baseClass.prototype[p];
     }
}

可以看出,所谓的反射机制,从简单方面来讲,就是对类中成员进行枚举、修改等操作的能力。如果存在一种机制,在不知道某一个类中到底有什么函数,或者成员变量的情况下就可以对其操作(例如,js可以对类成员进行枚举),这种机制就可以成为反射。
js中没有继承机制,但是可以对某一个类的成员通过反射机制“逐一复制”,然后再修改需要“覆盖”的成员,就可以达到“继承”的效果。这也是反射机制的一个应用。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87564.html

相关文章

  • PHP核心技术最佳实践(第一章 面向对象思想的核心概念

    摘要:现代的面向对象的思想不强调为真实世界建模变得更加理性化一些,把目标放在解耦上。各种语言中的多态多态确切的含义是同一类的对象收到相同消息时,会得到不同的结果。小结本章主要介绍面向对象思想的程序的组成元素类和对象。 第一章 面向对象思想的核心概念 showImg(https://segmentfault.com/img/bVNfjM?w=673&h=334); showImg(https:...

    dreamGong 评论0 收藏0
  • 最最最常见的Java面试题总结——第二周

    摘要:与都继承自类,在中也是使用字符数组保存字符串,,这两种对象都是可变的。采用字节码的好处语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。 String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性...

    yearsj 评论0 收藏0
  • Java开发

    摘要:大多数待遇丰厚的开发职位都要求开发者精通多线程技术并且有丰富的程序开发调试优化经验,所以线程相关的问题在面试中经常会被提到。将对象编码为字节流称之为序列化,反之将字节流重建成对象称之为反序列化。 JVM 内存溢出实例 - 实战 JVM(二) 介绍 JVM 内存溢出产生情况分析 Java - 注解详解 详细介绍 Java 注解的使用,有利于学习编译时注解 Java 程序员快速上手 Kot...

    LuDongWei 评论0 收藏0
  • 夯实基础系列一:Java 基础总结

    摘要:可实现单例模式代码块初始化静态变量,只被执行一次内部类不能与外部类重名,只能访问外部类静态数据包括私有多分支选择整型或字符类型变量或整数表达式开始支持。 前言 大学期间接触 Java 的时间也不短了,不论学习还是实习,都让我发觉基础的重要性。互联网发展太快了,各种框架各种技术更新迭代的速度非常快,可能你刚好掌握了一门技术的应用,它却已经走在淘汰的边缘了。 而学习新技术总要付出一定的时间...

    greatwhole 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<