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。

  • 相关阅读:
    log4j2 工具类
    Intellij IDEA的快捷键
    Intellij IDEA设置忽略部分类编译错误
    idea 激活
    DataGrip使用入门
    IDEA Run/Debug Configurations 中点击“+”号没有tomcat server选项
    临时
    java异常类
    java匿名类
    java内部类
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/5059319.html
Copyright © 2011-2022 走看看