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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目管理沙龙第五次聚会

项目管理沙龙第五次聚会本次的话题从第30个项目百态模式《短铅笔》开始。“短铅笔”模式里最让人印象深刻的是这一句话“只有把用短的铅笔交上去,才能更换一支长铅笔”。很多人都遇过这样的公司,因为要所谓的“控制成本”,结果却把自己的员工…

算法之排序算法-选择排序与优化

package com.ebiz.sort;import java.text.SimpleDateFormat; import java.util.Date;/*** author YHj* create 2019-07-28 20:58* 选择排序*/ public class Choose {public static void main(String[] args) {int[] arr new int[80000];for (int i 0; i < 80000; i) {arr[…

python 享元模式_python 设计模式之享元(Flyweight)模式

#写在前面这个设计模式理解起来很容易。百度百科上说的有点绕口。#享元模式的定义运用共享技术来有効地支持大量细粒度对象的复用。它通过共享已经存在的对橡大幅度减少需要创建的对象数量、避免大量相似类的开销&#xff0c;从而提高系统资源的利用率。#优点相同对象只要保存一…

[html] 怎样在<pre>标签内不转义<和>符号(原样输出html标签)?

[html] 怎样在标签内不转义<和>符号&#xff08;原样输出html标签&#xff09;&#xff1f; 将HTML代码嵌入到<script typetext/html styledisplay:block>中<script type"text/html" style"display: block;">哈哈哈dfdfd</script>…

单列模式

最近在学设计模式&#xff0c;学到创建型模式的时候&#xff0c;碰到单例模式&#xff08;或叫单件模式&#xff09;&#xff0c;现在整理一下笔记。 在《Design Patterns&#xff1a;Elements of Resuable Object-Oriented Software》中的定义是&#xff1a;Ensure a class on…

算法之排序算法-直接插入排序

package com.ebiz.sort;import java.text.SimpleDateFormat; import java.util.Date;/*** author YHj* create 2019-07-29 8:56* 插入排序*/ public class Insert {public static void main(String[] args) {// int [] arr{101,34,119,1};int[] arr new int[80000];for (int i…

佳能g3800故障灯说明书_热水器维修电话|史密斯燃气热水器出现16故障码

热水器出现故障代码其实是一件很常见的事情&#xff0c;大多是住户的热水器都出现过这样的问题&#xff0c;为了防止这样的事情也发生在我身上&#xff0c;我熟读热水器说明书&#xff0c;终于参透其中的道理&#xff0c;那么接下来我为大家介绍史密斯燃气热水器出现16故障码。…

DrawImage内存不足问题

出现这种问题&#xff0c;分析如下&#xff1a; 1.图片太大&#xff0c;绘制完没有及时释放。所谓图片太大&#xff0c;一种是原始图片本身很大&#xff0c;一种是把小图片拉伸到很大的矩形区域显示。 2.图片格式不对或者参数不对。 3.图片不完整。比如图片只下载了一半&#x…

算法之排序算法-shell排序(交换法)

可以先看注释掉的分析,最后在看三层for循环 package com.ebiz.sort;import java.util.Arrays;/*** author YHj* create 2019-07-30 8:53* shell排序-交换法*/ public class Shell{public static void main(String[] args) {int [] arr{8,9,1,7,2,3,5,4,6};getResult(arr);// Sy…

git语言包安装_Git分布式版本管理系统快速入门指南

为什么要使用版本管理系统无论有没有使用过专业化工具&#xff0c;每个人都或多或少地有版本管理的需求。我们在做论文、写报告或者设计方案时&#xff0c;因为难以避免的不断改动&#xff0c;总会形成很多个不同的版本&#xff0c;我们可能会用“某某设计方案_20180910”这样加…

[html] 如何放大点击的区域?

[html] 如何放大点击的区域&#xff1f; <div class"button">点我</div><style>.button{position:relative;}.button::after{content:"";position:absolute;top:-10px;left:-10px;right:-10px;bottom:-10px;}</style>个人简介 我…

(十)、java内部类与内部类的闭包和回调

一、成员内部类 1.可以把一个内部类看做是一个成员。成员内部类可以无条件访问外部类的所有成员属性和成员方法。 class OutterClass {//外部类private int in 0;static int inn4;public OutterClass(int in) {this.in in;}class InnerClass { //内部类public void outpu…

vb.net中滚动条一直显示没有数据时也显示_Android Studio 中 System Trace 的新增功能...

Android Studio 中 System Trace 的新增功能在 Android Studio 4.0 中&#xff0c;我们已经对 CPU Profiler 的 UI 做了大量调整来提供更加直观的工作流记录&#xff0c;而在 Android Studio 4.1 中&#xff0c;我们基于开发者们的反馈对此功能进行了持续改进&#xff0c;并且新…

[html] DOM节点的根节点是不是body?

[html] DOM节点的根节点是不是body&#xff1f; 文档对象模型 (DOM) 是HTML和XML文档的编程接口。它提供了对文档的结构化的表述&#xff0c;并定义了一种方式可以使从程序中对该结构进行访问&#xff0c;从而改变文档的结构&#xff0c;样式和内容。DOM 将文档解析为一个由节…

第一节 Memcached分布式缓存入门

关于Memcached的博文太多了&#xff0c;以下是个人学习的收集整理。 本节讨论问题: 简单介绍与应用下载安装注意事项简单测试Memcached分布式原理 一、介绍与应用 在常规的WEB开发下&#xff0c;基本都会利用到缓存用以降低对数据库的压力&#xff0c;提高访问速度。有时候缓存…

tomcat 拦截指定url_一口气说出 过滤器 和 拦截器 6个区别,别再傻傻分不清了

点击“ 程序员内点事 ”关注&#xff0c;选择“ 设置星标 ”坚持学习&#xff0c;好文每日送达&#xff01;周末有个小伙伴加我微信&#xff0c;向我请教了一个问题&#xff1a;老哥&#xff0c;「过滤器 (Filter) 和 拦截器 (Interceptor) 有啥区别啊&#xff1f;」 听到题目我…

[html] 如何使用纯html制作一个进度条?

[html] 如何使用纯html制作一个进度条&#xff1f; HTML中的progress () 元素用来显示一项任务的完成进度.虽然规范中没有规定该元素具体如何显示,浏览器开发商可以自己决定,但通常情况下,该元素都显示为一个进度条形式.个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后…

Java 多线程练习---创建两个子线程,每个线程交替输出“你好--来自线程***”...

|--需求说明 |--实现思路 1、创建一个类&#xff0c;实现Runnable&#xff0c;在这个类里面重写run()方法&#xff0c;在run()方法里面写一个20的for循环 2、创建一个类&#xff0c;实例化上面的类&#xff0c;用这个类的对象创建线程 |--代码内容 1 package cn.thread;2 3 /**…

关于Android的应用程序的发布的学习(一)

上一次写了一篇关于android应用程序打包成apk文件的签名&#xff0c;地址&#xff1a;http://blog.csdn.net/zqiang_55/article/details/6939170 最近再看sdk的时候发现其实在sdk中又了详细的少说明&#xff0c;现在将主要的翻译如下&#xff1a; 在Dev Gudie标签页中的Publish…

手动封装js的call和apply和bind和typeof和new方法

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注小歌谣一起学习前后端知识 闲来无事做 不如敲代码今天讲一下js里面的callapply和bind和typeof方法的手动封装由于最近比较忙但是有时间就会记录一下平时学习工作的一些代码用来分享这边就不直接多说开始我们的直接代码书写…