摘要:反射反射机制是指程序可以访问检测和修改它本身状态或行为的一种能力。可以利用反射机制继承。中没有继承机制,但是可以对某一个类的成员通过反射机制逐一复制,然后再修改需要覆盖的成员,就可以达到继承的效果。
反射
反射机制是指程序可以访问、检测和修改它本身状态或行为的一种能力。对于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的引用,Helloclass与Hellosubclass共享同一个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
摘要:现代的面向对象的思想不强调为真实世界建模变得更加理性化一些,把目标放在解耦上。各种语言中的多态多态确切的含义是同一类的对象收到相同消息时,会得到不同的结果。小结本章主要介绍面向对象思想的程序的组成元素类和对象。 第一章 面向对象思想的核心概念 showImg(https://segmentfault.com/img/bVNfjM?w=673&h=334); showImg(https:...
摘要:与都继承自类,在中也是使用字符数组保存字符串,,这两种对象都是可变的。采用字节码的好处语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。 String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性...
摘要:可实现单例模式代码块初始化静态变量,只被执行一次内部类不能与外部类重名,只能访问外部类静态数据包括私有多分支选择整型或字符类型变量或整数表达式开始支持。 前言 大学期间接触 Java 的时间也不短了,不论学习还是实习,都让我发觉基础的重要性。互联网发展太快了,各种框架各种技术更新迭代的速度非常快,可能你刚好掌握了一门技术的应用,它却已经走在淘汰的边缘了。 而学习新技术总要付出一定的时间...
阅读 3110·2021-11-22 15:25
阅读 3746·2021-11-17 09:33
阅读 3317·2021-11-08 13:15
阅读 3014·2021-09-22 10:56
阅读 507·2021-08-31 09:45
阅读 2710·2019-08-30 13:49
阅读 3045·2019-08-30 12:52
阅读 1109·2019-08-29 17:05