ckeditor 框架分析 几个核心“人物”

ckeditor代码中有几个核心的内容:

1. (function(){})();

2. prototype new 配合,继承属性方法

3. a.event.implementOn() 公共属性扩充

4. e.extend / a.tools.extend 自由扩充

5. a.on

6. j.add


1.(function(){})();

(function(){

//要运行的程序

})();

如此写法,能起到作用域作用;定义在中间的变量作用域被固定在这里,不会造成前后定义冲突。

定义时用var开头,作用域就在(function(){})();里了;如果没有var开头,作用域就超出,则像是全局变量了

只要加了var,即便与外界的变量重名也不会影响外界的变量。function F(){}定义,作用域也是在里面。F = function(){}则是全局了。


2.prototype new 配合,继承属性方法

这个是继承prototype的一个方法。

比如:

A = function(){}; //此处必须定义成函数
A.prototype = { //哈希
 x1 : function(){alert(1)},
 x2 : function(){alert(2)} 
};
//A.x1(); //此处不起作用
B = new A();
B.x1(); //起作用

再看一例:

A = function(){};
A.prototype = {
 x1 : function(){alert(1)},
 x2 : function(){alert(2)} 
};
A.x3 = function(){alert(3)};
A.x3(); //此处起作用
B = new A();
//B.x3(); //此处不起作用

prototype new 配合继承下来的只是A.prototype 下的内容。

另外说明:

当A、B都是一个Object类型,B = A;此时修改B下的属性方法,A也是会跟着修改的;

ckeditor里常有这样复值 e = a.tools; 此时扩充e, a.tools也是跟着修改,他们是绑在一起的;

但是用prototype new来继承的是全部独立的

简单的说:用new实例化后,prototype才能被继承下来


 

posted @ 2011-11-04 08:32  8kweb  阅读(221)  评论(0编辑  收藏  举报