ExtJs 属性多继承 requires,mixins,config用法

---------------------------------------------lesson2.html-----------------------------------------------begin----------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>HELLO WORD</title>
<link rel="stylesheet" type="text/css" href="../../../../extjs4/resources/css/ext-all.css" />
<script type="text/javascript" src="../../../../extjs4/bootstrap.js"></script>
<script type="text/javascript" src="indexDemo.js"></script>
</head>
<body>这里不用引入mywin.js
    <button id="myb">Show</button>
</body>
</html>

 

--------------------------------------------indexDemo.js-----------------------------------------------begin----------------------------------------------------

类的声明其实就是一个function
//function user(){
//    //java 语言的public
//    this.Name = 'uspcat';
//    this.age = 26;
//    //var 就相对于高级语言当中的private
//    var email = "yfc@126.com"
//    this.getEmail = function(){
//        return email;
//    }
//}
//var u = new user();
alert(u.getEmail())
//
//var person = {
//    name:'yfc'
//    ,age:26
//};
//alert(person.name+"  "+person['age'])
(function(){
    // 引入命名空间'code/ux'; 在 lesson2.html 中就只用引入indexDemo.js 而不用 引入 mywin.js了;  
    // indexDemo.js 会在必要的时候自己引入 mywin.js;  则 在code/ux 的命名空间下 寻找  ux.myWin(而不是mywin.js)了如下面的代码;
    
    /*  这段是我自己拷贝的; 本来是在程序的下面; 为了方便观看 copy到这;注意 requires  关键词; 类似于include 关键字; 在必要的时候引入; 这里也是'ux.myWin'不是js名
    Ext.get("myb").on("click",function(){
            var win = Ext.create("ux.myWin",{
                title:'my win',
                price:600,
                requires:['ux.myWin']
            });
            //alert(win.getPrice())
        });*/
    //loader 启用;
    Ext.Loader.setConfig({
        enabled:true,
        paths:{
            myApp:'code/ux'
        }
    });
    Ext.onReady(function(){
        /**
        var win = new Ext.window.Window({
                width:400,
                height:300,
                title:'uspcat'
            });
//        win.show();
        //1.得到那个按钮的dom对象
        //2.为按钮对象添加单击的事件
        //3.单击的时候调用对象win的show方法
        Ext.get("myb").on("click",function(){
            win.show();
        });
        */
//        var o = {
//            say : function(){
//                alert(11111);
//            }
//        }
//        var fn = Ext.Function.alias(o,'say'); //把o 类里面的say 方法 起别名为fn;  下面是调用fn()方法;
//        fn();
//        var win = Ext.create('Ext.window.Window',{    // 这样就不用new 了 推荐使用;
//            width:400,
//            height:300,
//            title:'uspcat'
//        });
//        win.show();

        Ext.get("myb").on("click",function(){
            var win = Ext.create("ux.myWin",{            // Ext.create 创建对象;
                title:'my win',
                price:600,
                requires:['ux.myWin']
            });
            //alert(win.getPrice())      // 这样也可以显示;  因为 ux.myWin 里面  有      config: {  price: 500},  这样写; 就自动加上了get set 方法;
            
            
        });
        Ext.define("say",{
            cansay:function(){
                alert("hello");
            }
        })
        Ext.define("sing",{
            sing:function(){
                alert("sing hello 123");
            }
        })
        Ext.define('user',{
            mixins :{   // 混合;  类似于多继承;
                say : 'say',  // 自己感觉前面的say 无所谓了; 重要的是 后面的 value'say'  指定继承 say 类;  
                sing: 'sing'
            }
        });
        var u = Ext.create("user",{});
        u.cansay();   // 可以使用父类的方法;
        u.sing();        // 可以使用父类的方法;
        
    });
})();


 

--------------------------------------------myin.js-----------------------------------------------begin----------------------------------------------------


        Ext.define("ux.myWin",{      // Ext.define("name",{..} ); 定义一个类;  
            extend:'Ext.window.Window',
            width:400,
            height:300,
            config: {   // 生成getSet 方法;  
               price: 500
            },
            newtitle: 'new uspcat',   //默认的 ; 子类中可以重新赋值
            mySetTitle:function(){
                this.title = this.newtitle;
            },
            title:'uspcat',
            
             //这里是 构造方法;
            initComponent: function() {
                this.mySetTitle();     //  如果报错 说mySetTitle 方法不认识; 那么 加上this 试试; 老师加上this 之后就没问题了;
                // argments 代表参数; 感觉和java里面super(); 差不多;
                this.callParent(arguments);
            }
        })


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值