MooTools教程(告诉你为什么学Mootools)(3)

http://www.itjxue.com  2015-08-06 23:10  来源:未知  点击次数: 



下面说说重点, moo的类里的extend和 implement
先说 implement,之前已经说了一些了

 

 

Java代码

 

  1. var MyClassA = new Class();   
  2. MyClassA.implement( { methodA : function() {... } }  );  

 

var MyClassA = new Class();
MyClassA.implement( { methodA : function() {... } }  );

执行后 MyClassA 将拥有 methodA.

implement用来向类中添加属性和方法(会覆盖同名属性和方法),相当于
Object.extend (MyClassA.prototype , {... } )
但是Object.extend 不支持多个source,implement可以,示例如下:
MyClassA.implement( objA , objB, objC ... );

下面来看看moo的Class.extend.
moo的Class.extend才是我们期待的真正的"类继承",看一下官方的示例

 

 

Java代码

 

  1. var Animal = new Class({   
  2.     initialize: function(age){   
  3.         this.age = age;   
  4.     }   
  5. });   
  6. var Cat = Animal.extend({   
  7.     initialize: function(name, age){   
  8.         this.parent(age); //will call the previous initialize;   
  9.         this.name = name;   
  10.     }   
  11. });  

 

		var Animal = new Class({
			initialize: function(age){
				this.age = age;
			}
		});
		var Cat = Animal.extend({
			initialize: function(name, age){
				this.parent(age); //will call the previous initialize;
				this.name = name;
			}
		});

看那个parent() !!!!
通过moo的Class.extend实现的继承提供一个关键的方法 parent().
使用他你可以调用父类中的同名方法,好像java里的super一样.
这个示例已经可以说明一切了.

关于prototype和moo的类机制和继承机制的对比就到这里,孰优孰劣大家心里应该有数了吧.

===========================================
三.抽象对象
===========================================

再来看一看"抽象对象". 这个虽然对于开发人员来说用处不大,但还是对比一下吧,小细节也能看出作者的用心.

Prototype
prototype的抽象对象很简单
var Abstract = new Object();
具体的意义不大.

Mootools
moo的的抽象对象相对更完善一些.

 

 

Java代码

 

  1. var Abstract = function(obj){   
  2.     obj = obj || {};   
  3.     obj.extend = $extend;   
  4.     return obj;   
  5. };  

 

var Abstract = function(obj){
	obj = obj || {};
	obj.extend = $extend;
	return obj;
};


支持自定义抽象(以参数形式传入),同时会为抽象对象自动添加extend方法.

===========================================
四. 关于 $()
===========================================

Prototype
prototype的$大家都比较熟悉了, 工作原理就是
通过id取得一个页面元素(或者直接传入一个页面元素对象),然后给他增加一些prototype提供的方法和属性,来方便开发人员对页面元素的使用.

Mootools
moo在这方面做的差不多.
不同的主要有两点, 首先moo为页面元素增加的方法和属性与prototype的不同(这个稍后会介绍),另外一个不同是moo的$兼具了对象管理的一个功能.
他引入了一个  Garbage 类, 来对页面元素进行一个统一的管理和回收(主要是回收).
可以更好的减少js(或浏览器)造成的内存泄露等问题.

具体的大家可以看一下代码,在这里就不详细说明了.

(责任编辑:IT教学网)

更多

推荐Javascript/Ajax文章