WinJS.Class 初探

之前看了一些javascript的面向对象方法,主要是为了win8开发的学习。

在win8开发中,可以使用js定义类的方式进行定义,也可以用WinJS提供的方法,下面就对WinJS.Class提供的三个对类的基本操作函数进行简单的说明。

WinJS.Class.define

Syntax

var object = WinJS.Class.define(constructor, instanceMembers, staticMembers);
类的定义,这个函数有三个参数,分别是 构造函数、实例成员、静态成员。下面是Person类的定义
 //基本类的定义
            var Person = WinJS.Class.define(
                function (name, sex) {
                    this.name = name;
                    this.sex = sex;
                },
                {
                    name: {
                        get: function () { return name; },
                        set: function (newname) { name = newname; }
                    },
                    sex: "",

                    sayHello: function () {
                        console.log("instanceMember:Person name is: "+ this.name +" and sex is: "+ this.sex);
                    }

                },
                {
                    sayHello: function () {
                        console.log("staticMember:Person");
                    }
                });

            var onePerson = new Person("kay", "male");
            onePerson.sayHello(); //output: instanceMember:Person name is: kay and sex is: male
            Person.sayHello(); //output: staticMember:Person

从代码中可以看出,在定义成员时,也可以像js一样,定义该成员的get/set访问函数。

WinJS.Class.derive

Syntax

var object = WinJS.Class.derive(baseClass, constructor, instanceMembers, staticMembers);
继承,这个函数除了第一个参数是基类之外,另外三个参数和define函数一样,下面是继承Person类的Student类

//继承
            var Student = WinJS.Class.derive(Person,
                function (name, sex, stuNo, dept) {
                    //Person.prototype.constructor(name, sex);
                    Person.call(this, name, sex);
                    this.stuNo = stuNo;
                    this.dept = dept;
                },
                {
                    doSomething: function () {
                        console.log("I'm "+this.name+" and my stuNo is "+this.stuNo);
                    }
                },
                {
                    sayHello: function () {
                        console.log("staticMember:Student");
                    }
                });

            var oneStudent = new Student("dan", "female", "20102100227", "math");
            oneStudent.sayHello(); //output: instanceMember:Person name is: dan and sex is: female
            oneStudent.doSomething(); //outout: I'm dan and my stuNo is 20102100227
            Student.sayHello(); //output: staticMember:Student

从Student类的构造函数中可以看出,调用基类构造函数的方法有两种,都可以调用基类的构造函数进行初始化。


WinJS.Class.mix

Syntax

var object = WinJS.Class.mix(constructor);
类的复合,我觉得官方的语法说明说的不太好,这个函数的参数应该是这样的,最左边的参数是目标类,右边是源类,看下面的代码就明白了
 //复合
            var Chairman = WinJS.Class.define(null,
                {
                    introductionMe: function () {
                        console.log("I'm the chairman");
                    }
                });

            WinJS.Class.mix(Chairman, Person);
            var xiaohong = new Chairman();
            xiaohong.introductionMe(); //output: I'm the chairman
            xiaohong.sayHello(); //output: staticMember:Person
Chairman类和Person类进行复合之后,就可以使用Person类的sayHello()方法了。

从上面三个示例可以看出,WinJS对类的操作其实是更简单的,比起js,当然在web开发当然还是使用js,至于在win8中是不是真的WinJS使用起来会比较方便,这个还是需要自己通过实践之后才能对比出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值