日期:2014-05-16  浏览次数:20342 次

Ext(5)——namespace、js的公私有方法和属性

Ext的namespace和java的namespace是同一个概念。Ext在对类进行定义的时候如果先前的包是不存在的则不能进行类定义。 具体说明在代码中都有注释。

?

?

代码如下:

?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>04_namespace.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    <script type="text/javascript" src="../ext4/ext-all-debug.js"></script>
    <script type="text/javascript">
    	Ext.onReady(function() {
    		Ext.namespace("com.tiantian.test");//声明一个namespace,命名空间
    		com.tiantian.test.User = function(config) {//定义一个对象
    		//对象中的所有公共属性和方法都要使用this关键字来定义,如定义属性name,则有this.name=""
    			if (config) {//当指定了config对象的时候执行该语句
    				this.address = config.address;//通过参数给属性赋值
    			} else {
    				this.address = "";
    			}
    			//定义一个公共属性
    			this.name = "张三";
    			//定义一个私有属性
    			var name2 = "私有属性";
    			this.email = "test@test.com";//默认属性
    			this.now = function() {
    				alert(new Date().toLocaleString());
    			}
    			//定义带有返回值的公共方法
    			this.getName = function() {
    				alert(getName2());
    				return this.name;
    			}
    			var getName2 = function() {
    			//对于私有变量是不能使用this关键字进行访问的
    				return name2;
    			}
    		};
    		var user = new com.tiantian.test.User({address: "湖南"});
    		//新建对象后再往其中添加属性
    		Ext.apply(user,{
    			name: "zhangsan",//这个name属性会覆盖前面默认的那个name
    			username: "zhangsanusername",
    			password: "zhangsanpassword"
    		});
    		//alert(user.name);
    		//alert(user.address+"      "+user.email);
    		//alert(user.now);
    		//user.now();//调用对象的方法
    		var n = user.getName();
    		alert(n);
    	});
    </script>

  </head>
  
  <body>
    This is my HTML page. <br>
  </body>
</html>