以下是今天所学代码,网上有这篇博客可供参考,另外还是推荐官方文档 ,以下是今天所敲代码:
//用mootools创建类的方式://方式1:用标准方式传入一个对象字面量/* var Person = new Class({initialize:function(name,age){this.name=name;this.age=age;},log:function(){console.log(this.name+","+this.age);}});var mark = new Person("Tom",20);mark.log();
*///方式2:传入一个普通函数然后用implement方法对类进行扩展:/* var Person = new Class(function(name,age){this.name=name;this.age=age;});//用implement惊醒扩展:Person.implement("log",function(){console.log(this.name+","+this.age);});var mark=new Person("cat",22);mark.log();
*///想扩展多个就多次使用implement
/*var Person = new Class(function(name,age){this.name=name;this.age=age;});//用implement多次扩展:Person.implement("getname",function(){console.log(this.name);});Person.implement("getage",function(){console.log(this.age);});var mark=new Person("cat",22);mark.getname();mark.getage();*///上述用implement进行扩展每次只能扩展一个,想扩展多个可用字面量的方式/*var Person = new Class(function(name,age){this.name=name;this.age=age;});//用字面量的方式用implement扩展:Person.implement({"getname":function(){ //注意:getname 加不加分号都行console.log(this.name);},"getage":function(){console.log(this.age);}});var mark=new Person("cat",22);mark.getname();mark.getage();*//*mootools中为对象添加属和方法用implement,为类添加属性和方法用extend注意:实例不能调用为类创建的方法类不能直接调用为实例创建的方法类可以通过 类名.prototype.实例上的方法*//*var Person = new Class(function(name,age){this.name=name;this.age=age;});Person.implement({instancemethod:function(){console.log("这是实例方法");}});Person.extend({classmethod:function(){console.log("这是类方法");}});var mark = new Person("jack",33);mark.instancemethod();//mark.classmethod(); //出错,实例不能调用类上的方法Person.classmethod(); //Person.instancemethod();//出错,类不能嗲用实例上的方法//可通过prototype的方式调用:Person.prototype.instancemethod();
*///私有成员
// 用闭包为类创建私有成员/*var Person = (function(){//私有变量var privatevalue = 0;//私有方法var privatemethod = function(name){return name;}return new Class({initialize:function(name,age){this.name = name;this.age = age;privatevalue++;//使用外部的privatevalue形成闭包},//共有方法log:function(){console.log(privatemethod(this.name)+","+this.age);},getprivatevalue:function(){return privatevalue;}});})();var mark = new Person("mark",24);mark.log();console.log(mark.getprivatevalue());//console.log(mark.getprivatevalue());*///继承/*
//创建一个基类:var Animal = new Class({initialize:function(age){this.age=age;}});
//创建一个子类:var Cat = new Class({Extends:Animal,initialize:function(name,age){this.parent(age);//使用基类中的this.name=name;}});var cat = new Cat("rose",20);console.log(cat.name);console.log(cat.age);*///用Extends实现了(单)继承
/*var Fa = new Class({add:function(a,b){return a+b;},sub:function(a,b){return a-b;}});var Son = new Class({Extends:Fa,mul:function(a,b){return a*b;}});var son1 = new Son();console.log(son1.add(1,2));console.log(son1.sub(1,2));console.log(son1.mul(1,2));*//*var Fa = new Class({add:function(a,b){return a+b;}});var Fa2 = new Class({add:function(a,b){return a-b;}});var Son = new Class({Implements:Fa2,Extends:Fa //两者没有严格的优先级,后面的总能重写前面的});var son1 = new Son();console.log(son1.add(1,2));*/