Egret类class和module写法区别

普通类

Test.ts

class Test {
    public name:string = "Test";
    public run(){
         console.log(this.name);
    }
}

var test:Test = new Test();

编译后的Test.js

var Test = (function () {
    function Test() {
        this.name = "Test";
    }
    var d = __define,c=Test,p=c.prototype;
    p.run = function () {
        console.log(this.name);
    };
    return Test;
}());
egret.registerClass(Test,‘Test‘);

Test2.ts

module Test2 {
    export class Test2{
        public name: string = "Test2";
        public run() {
            console.log(name);
         }
    }
}var test2:Test2 = new Test2.Test2();

编译后的Test2.js

var Test2;
(function (Test2_1) {
    var Test2 = (function () {
        function Test2() {
            this.name = "Test2";
        }
        var d = __define,c=Test2,p=c.prototype;
        p.run = function () {
            console.log(name);
        };
        return Test2;
    }());
    Test2_1.Test2 = Test2;
    egret.registerClass(Test2,‘Test2.Test2‘);
})(Test2 || (Test2 = {}));

静态类

Test.ts

class Test {
    public static name:string = "Test";
    public static run(){
         console.log(this.name);
    }
}Test.run();

编译后的Test.js

var Test = (function () {
    function Test() {
    }
    var d = __define,c=Test,p=c.prototype;
    Test.run = function () {
        console.log(this.name);
    };
    Test.name = "Test";
    return Test;
}());
egret.registerClass(Test,‘Test‘);

Test2.ts

module Test2 {
    var name:string = "Test2";

    export function run(){
        console.log(name);
    }
}Test2.run();

编译后的Test2.js

var Test2;
(function (Test2) {
    var name = "Test2";
    function run() {
        console.log(name);
    }
    Test2.run = run;
})(Test2 || (Test2 = {}));

RegisterClass.ts

export function registerClass(classDefinition:any, className:string, interfaceNames?:string[]):void {
        if (DEBUG) {
            if (!classDefinition) {
                $error(1003, "classDefinition");
            }
            if (!classDefinition.prototype) {
                $error(1012, "classDefinition")
            }
            if (className === void 0) {
                $error(1003, "className");
            }
        }
        var prototype:any = classDefinition.prototype;
        prototype.__class__ = className;
        var types = [className];
        if (interfaceNames) {
            types = types.concat(interfaceNames);
        }
        var superTypes = prototype.__types__;
        if (prototype.__types__) {
            var length = superTypes.length;
            for(var i=0;i<length;i++){
                var name = superTypes[i];
                if(types.indexOf(name)==-1){
                    types.push(name);
                }
            }
        }
        prototype.__types__ = types;
    }
时间: 2024-08-06 03:09:25

Egret类class和module写法区别的相关文章

CSS伪类和伪元素的区别

CSS - 伪类和伪元素的区别 本文转载于http://www.cnblogs.com/iceflorence/p/5796083.html 伪类和伪元素皆独立于文档结构.它们获取元素的途径也不是基于id.class.属性这些基础的元素特征,而是在处于特殊状态的元素(伪类),或者是元素中特别的内容(伪元素).区别总结如下: CSS伪类 (Pseudo-classes):用于向某些选择器添加特殊的效果,即在元素当前静态样式的基础上添加特殊效果(一般都是动态效果),所以一个元素达到一个特定状态时,它

《转载》详解 CSS 属性 - 伪类和伪元素的区别

首先,阅读 w3c 对两者的定义: CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果.这里特殊指的是两者描述了其他 css 无法描述的东西. 伪类种类 伪元素种类 区别 这里用伪类 :first-child 和伪元素 :first-letter 来进行比较. p>i:first-child {color: red} <p> <i>first</i>

CSS 属性 :before &amp;&amp; :after的用法,伪类和伪元素的区别

一::before && :after的用法 :before 如同对伪元素的名称一样,:before 是用来给指定的元素的内容前面插入新的内容.举例说明: .before:before{content:'you before'; color:red;} <div class="before"> me</div> 在这里我们给伪元素 :before 添加了属性 content,并赋值为 you before.我们来看效果: //在指定元素的内容 m

详解 CSS 属性 - 伪类和伪元素的区别(再也不用概念盲了!!!)

首先,阅读 w3c 对两者的定义: CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果.这里特殊指的是两者描述了其他 css 无法描述的东西. 伪类种类 伪元素种类 区别 这里用伪类 :first-child 和伪元素 :first-letter 来进行比较. p>i:first-child {color: red} <p> <i>first</i>

类和ID选择器的区别

学习了类选择器和ID选择器,我们会发现他们之间有很多的相似处,是不是两者可以通用呢?我们不要着急先来总结一下他们的相同点和不同点: 相同点:可以应用于任何元素不同点: 1.ID选择器只能在文档中使用一次.与类选择器不同,在一个HTML文档中,ID选择器只能使用一次,而且仅一次.而类选择器可以使用多次. 下面代码是正确的: <p>三年级时,我还是一个<span class="stress">胆小如鼠</span>的小女孩,上课从来不敢回答老师提出的问题

Thread类中各种状态的区别以及使用

wait()是等待某个object:1.执行object的synchronized方法:2.执行一段synchronized代码,而且是基于object做的同步:3.如果object是class类,可以执行它的synchronized static方法 notify().notifyAll():能够唤醒等待的线程 interrupt():中断一个线程,用得比较少 join().join(long millis):当这个线程调用了join()方法后它才执行后面的线程,保证了线程之间有顺序的执行.如

Object类和String类equals方法有什么区别?

相信很多学习过Java的同学都知道,在比较两个String对象的内容是否相同时是使用equals方法的 如:String str1=new String("A"); String str2=new String("B"); String str3=new String("B"); boolean result1= str1.equals(str2); boolean result2= str2.equals(str3); System.out.p

css中伪类和伪元素的区别

转载:http://www.cnblogs.com/ihardcoder/p/5294927.html CSS3伪类和伪元素的特性和区别 前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus,:hover以及<a>标签的:link.visited等,伪元素较常见的比如:before.:after等. 其实上面提到的这些伪类和伪元素都是CSS1和CSS2中的概念,CSS1和CSS2中对伪类的伪元素的区别比较模糊,甚至经常有同行将:before.:after称为伪类.CSS3

MVC ---- EF4.0和EF5.0增删改查的写法区别及执行Sql的方法

EF4.0和EF5.0增删改查的写法区别 public T AddEntity(T entity) { //EF4.0的写法 添加实体 //db.CreateObjectSet<T>().AddObject(entity); //EF5.0的写法 db.Entry<T>(entity).State = EntityState.Added; //下面的写法统一 db.SaveChanges(); return entity; } public bool UpdateEntity(T