zoukankan      html  css  js  c++  java
  • JavaScript “类”风格与对象关联委托

     结果:

    类风格代码

    function Widge(width, height) {
      this.width  = width || 50;
      this.height = height || 50;
      this.$elem = null;
    }
    
    Widge.prototype.render = function($where) {
      if(this.$elem) {
        this.$elem.css({
           this.width + "px",
          height: this.height + "px"
        }).appendTo($where);
      }
    };
    
    function Button(width, height, label) {
      Widge.call(this, width, height);
      this.label = label || "Default";
      this.$elem = $("<button>").text(this.label);
    }
    
    Button.prototype = Object.create(Widge.prototype);
    
    Button.prototype.render = function($where) {
      Widge.prototype.render.call(this, $where);
      this.$elem.click(this.onClick.bind(this));
    }
    
    Button.prototype.onClick = function(evt) {
      console.log( "Button '" + this.label + "' clicked!" );
    }
    
    $(function() {
      var $body = $(document.body);
      var btn1 = new Button(125, 30, "Hello");
      var btn2 = new Button(150, 40, "World");
    
      btn1.render($body);
      btn2.render($body);
    });
    

    对象关联委托

    var Widge = {
      init: function(width, height) {
        this.width = width || 50;
        this.height = height || 50;
        this.$elem = null;
      },
      insert: function($where) {
        if(this.$elem) {
          this.$elem.css({
             this.width + "px",
            height: this.height + "px"
          }).appendTo($where);
        }
      }
    };
    
    var Button = Object.create(Widge);
    
    Button.setup = function(width, height, label) {
      this.init(width, height);
      this.label = label || "Default";
      this.$elem = $("<button>").text(this.label);
    };
    
    Button.build = function($where) {
      this.insert($where);
      this.$elem.click(this.onClick.bind(this));
    };
    
    Button.onClick = function(evt) {
      console.log("Button " + this.label + " clicked!");
    };
    
    $(function() {
      var $body = $(document.body);
      
      var btn1 = Object.create(Button);
      btn1.setup(125, 30, "Hello");
    
      var btn2 = Object.create(Button);
      btn2.setup(150, 40, "World");
    
      btn1.build($body);
      btn2.build($body);
    });
    
  • 相关阅读:
    7.数组的扩展
    8.对象的扩展
    6.函数的扩展
    5.数值的扩展
    2.变量的解构赋值
    1.let 和 const 命令
    CTE(With As)
    delphi使用ADO在sql数据库存取图片的方法
    使用Razor生成Word
    Redis基础总结
  • 原文地址:https://www.cnblogs.com/dreamerjdw/p/6272982.html
Copyright © 2011-2022 走看看