zoukankan      html  css  js  c++  java
  • js深入研究之自定义混合Mixin函数

    <script type="text/javascript">
    /* 增加函数 */
    
    function augment(receivingClass, givingClass) {
      for(methodName in givingClass.prototype) { 
        if(!receivingClass.prototype[methodName]) {
          receivingClass.prototype[methodName] = givingClass.prototype[methodName];
        }
      }
    }
    
    /* 改进的增加函数 */
    
    function augment(receivingClass, givingClass) {
      if(arguments[2]) { // Only give certain methods.
        for(var i = 2, len = arguments.length; i < len; i++) {
          receivingClass.prototype[arguments[i]] = givingClass.prototype[arguments[i]];
        }
      } 
      else { // Give all methods.
        for(methodName in givingClass.prototype) { 
          if(!receivingClass.prototype[methodName]) {
            receivingClass.prototype[methodName] = givingClass.prototype[methodName];
          }
        }
      }
    }
    
    
    var Author = function Author(name, books) { // 构造函数
      this.name = name;
      this.books = books || 'default value';
    };
    
    Author.prototype = {
      getName: function() {
        return this.name;
      },
      getBooks: function() {
        return this.books;
      }
    };
    
    var Editor = function Editor() {
    };
    Editor.prototype = {
      hello: function() {
        return 'Hello,'+this.name;
      }
    };
    
    augment(Author, Editor);
    
    var author = new Author('Ross Harmes', ['JavaScript Design Patterns']);
    console.log(author.getName());
    console.log(author.getBooks());
    console.log(author.hello());
    </script>

    结果

    经过拼接处理之后,author就获取到了hello方法了,属性还是自己的name。

  • 相关阅读:
    python--总结04-2---并发及数据库
    python--总结04-1---并发及数据库
    python--总结03--面向对象及网络
    python---总结01--基础
    python---总结02--函数
    mysql的join操作
    Bash 中的特殊字符大全
    Linux中软件的安装和卸载命令
    MFC 多窗口通信时,使用RadioButton和Button时冲突问题
    MFC中处理UI界面时的注意点
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/5059319.html
Copyright © 2011-2022 走看看