js继承封装(三)

Myth丶恋晨 2022-08-10 06:16 213阅读 0赞

封装继承方法

  1. //实现继承 subClass为子类 superClass为父类
  2. function extendsClass(subClass,superClass){
  3. var oldPrototype=subClass.prototype;
  4. var Clazz=new Function();
  5. Clazz.prototype=superClass.prototype;
  6. subClass.prototype=new Clazz();
  7. subClass.prototype.constructor=subClass;
  8. for(var key in oldPrototype){
  9. if(oldPrototype.hasOwnProperty(key)){
  10. subClass.prototype[key]=oldPrototype[key];
  11. }
  12. }
  13. }
  14. function UpdateCommand(path) {
  15. this.name="修改命令";
  16. this.path = path;
  17. this.executeFun=function(){
  18. alert("发送请求1");
  19. }
  20. }
  21. UpdateCommand.prototype.execute = function () {
  22. alert("发送请求2");
  23. }
  24. //定义一个查询command函数
  25. function QueryCommand(path) {
  26. UpdateCommand.call(this,path);
  27. }
  28. QueryCommand.prototype.execute=function(){
  29. alert("发送查询请求");
  30. }
  31. extendsClass(QueryCommand,UpdateCommand);
  32. var queryCommand = new QueryCommand();
  33. queryCommand.execute();
  34. //发送查询请求

对封装方法简单的说明下

  1. //实现继承 subClass为子类 superClass为父类
  2. function extendsClass(subClass,superClass){
  3. //临时存放 用于后面使用
  4. var oldPrototype=subClass.prototype;
  5. //生成新函数,通过该函数来实现原型继承,则减少了superClass的实例化
  6. var Clazz=new Function();
  7. clazz.prototype=superClass.prototype;
  8. subClass.prototype=new Clazz();
  9. //改变原型继承后子类的constructor 指向
  10. subClass.prototype.constructor=subClass;
  11. //保证子类方法重载
  12. for(var key in oldPrototype){
  13. if(oldPrototype.hasOwnProperty(key)){
  14. subClass.prototype[key]=oldPrototype[key];
  15. }
  16. }
  17. }

这样封装以后,就从一定程度上解决了第二章里面讲到的问题。

发表评论

表情:
评论列表 (有 0 条评论,213人围观)

还没有评论,来说两句吧...

相关阅读