js面向对象浅析-表单生成

前言:这里就表单生成器的案例对js面向对象分析一下。。。


(function (window){
	var FormBuilder=function(data){
      this.data=data;
	};
	window.FormBuilder=FormBuilder;
})(window);

FormBuilder.prototype.create=function(){
	var html="";
	for(var k in this.data){
		var item={tag:"",text:"",attr:{},option:null};
		for(var n in this.data[k])
		{
			item[n]=this.data[k][n];
		}
		html+=bulider.toHTML(item);
	}
	return '<table>'+html+'</table>';
};

var bulider={
	toHTML:function(obj){
		var html=this.item[obj.tag](this.attr(obj.attr),this.option);
		return '<tr><th>'+obj.text+'</th><td>'+html+'<td></tr>';
	},
	attr:function(attr){
		var html="";
		for(var k in attr){
			html+=k+'="'+attr[k]+'"';
		}
		return attr;
	},
	item:{
		input:function(attr,option){
          var html=" ";
          if(option===null){
            html+='<input '+attr(attr)+'>';
          }else{
          	for(var k in option){
          		html += '<label><input '+attr+'value="' + k+'"'+'>';
          		html+=option[k]+'</label>'
          	}
          }
          console.log(html);
          return html;
		},
		select:function(attr,option){
             var html="";
             for(var k in option){
             	html+='<option value="'+k+'">'+option(k)+'</option>';
             }
             return '<select'+attr+'>'+html+'</select>';
		},
		textarea:function(attr){
			return '<textarea'+attr+'></textarea>'
		}
	}
};

解析:
这是面向对象思想的js编程,将标签都封装成对象
比如将<input type="text" name="user">封装成

{
 tag:'input',
 text:'姓名',
 attr:{type:'text',name:'user'},
 option:'null'
}

首先通过立即执行函数建立建立自己的FormBuilder构造函数,这体现了函数的封装性,避免了全局变量污染,然后通过在FormBuilder的原型链上编程,创建自己create函数,然后变成html,最后插入页面。。
这样写避免了直接修改HTML代码,便于以后的开发和维护,但这样失去了易读性。。。

注意:在面向对象编程时,不得不注意,this的指向问题,

  1. 如果是new出来的构造函数,this指的就是自己。
  2. 如果直接调用一个方法,this指的是window。
  3. 如果是一个对象的方法指的就是这个对象。

比如:

var bulider={
	toHTML:function(obj){
       //在这里的this指的是bulider这个对象。。
		var html=this.item[obj.tag](this.attr(obj.attr),this.option);
		return '<tr><th>'+obj.text+'</th><td>'+html+'<td></tr>';
	},
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
docker-compose 是 Docker 官方的一个用于定义和运行容器化应用的工具。它使用 YAML 文件来配置应用的服务、网络和卷等方面的设置。 当使用 docker-compose 部署 MySQL 时,可能会遇到无法访问 MySQL 的问题。出现这种情况一般有以下几个可能的原因: 1. 网络配置问题:docker-compose 在默认情况下会创建一个默认的网络,并将所有定义的服务连接到该网络。如果服务的网络配置不正确,可能导致无法访问 MySQL。可以通过检查网络配置或创建自定义网络来解决此问题。 2. 端口映射问题:MySQL 默认使用 3306 端口进行通信,但是在容器内部的端口与宿主机上的端口之间可能存在映射问题。可以通过检查端口映射配置或使用容器的 IP 地址来解决此问题。 3. 认证问题:MySQL 服务通常需要进行身份验证才能访问。在 docker-compose 文件中,可以通过设置环境变量来指定 MySQL 的用户名和密码。如果未正确设置这些环境变量,可能导致无法访问 MySQL。可以检查环境变量配置或者在容器内部手动配置用户名和密码来解决此问题。 4. 容器启动顺序问题:如果在 docker-compose 文件中定义了多个服务,并且它们之间有依赖关系,那么容器启动的顺序可能会影响 MySQL 的访问。可以通过在容器之间添加依赖或者设置延迟启动来解决此问题。 总结起来,当 docker-compose 部署的 MySQL 无法访问时,通常是由于网络配置、端口映射、认证配置或容器启动顺序等问题造成的。通过检查这些配置,并进行适当的调整或修复,通常可以解决无法访问 MySQL 的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值