JavaScript反射机制与继承:概念

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

反射

反射机制是指程序可以访问、检测和修改它本身状态或行为的一种能力。对于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中没有继承机制,但是可以对某一个类的成员通过反射机制“逐一复制”,然后再修改需要“覆盖”的成员,就可以达到“继承”的效果。这也是反射机制的一个应用。

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看