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才能被繼承下來
?
轉載于:https://www.cnblogs.com/8kweb/archive/2011/11/04/2235264.html
總結
以上是生活随笔為你收集整理的ckeditor 框架分析 几个核心“人物”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CA系统(概念、结构和功能)和CA证书
- 下一篇: 【摘录】MTK按键扫描原理及相关代码