• 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。

  • 相关阅读:
    集合类小结
    Java相关文章
    centos下同时启动多个tomcat
    express发送get或post请求
    node.js的querystring模块
    node.js的url解析和生成
    node.js判断是否文件夹和文件
    node.js删除文件
    node.js对文件夹增删改查的操作
    node运行js文件热更新
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/5059319.html
Copyright © 2020-2023  润新知