所谓类抄写,就是将所构造的对象在生产出来之前,先到父类的构造工厂里面进行一次“洗礼“,以使得子类具有父类的性质。然后,对所要构造的对象进行个性化的定制。在个性化的过程中,可以对父类强加给自己的行为和属性进行重写。籍此来在javascript中实现“继承”的功能。
这种继承机制中存在的缺点:
1. 在这种继承机制中,子类可以保存父类的信息,但是子类无法保存祖父类的信息。
2. 子类对象无法通过instanceof运算来判断自己是否是派生自某个父类。
3. 子类可以访问父类的函数和属性(甚至是被子类重写过的),但是无法访问经过父类重写过的祖父类的属性和函数。
下面通过具体示例说明:
extend=function(subclass,baseclass){
subclass.baseContructor = baseclass;
subclass.base={};
baseclass.call(subclass.base);
}
function Mouse(){};
function Animal(name){
this.name=name;
this.say=function(msg){
console.log(this.name+": "+msg)
}
this.eat=function(){
this.say("yum");
}
}
function Cat(name){
Cat.baseContructor.call(this,name);
this.eat=function(food){
if(food instanceof Mouse){
Cat.base.eat.call(this);
}
else{
this.say('yuk');
}
}
}
extend(Cat,Animal);
function Lion(name){
Lion.baseContructor.call(this,name);
}
extend(Lion,Cat);
var cat = new Cat('Cat');
var mouse = new Mouse();
cat.eat(mouse);
var lion = new Lion('Lion');
lion.eat(mouse);
console.log(lion.name);
alert(cat instanceof Cat);
在上例中Lino显然无法访问到Animal类中的eat函数,而且也不知道Cat是其父类,而且(lion instanceof Cat)返回false。
相关推荐
该系统是一个基于web的软件。该系统的客户端采用javascript和php作为平台的开发语言,...在人们繁忙的工作环境中,很多资料文件都要形成规范化的文档便于分类和存放,信息化的社会已经将以前手工抄写文档全部用电脑办公
在js里类的继承一般是类抄写和原型继承混合使用,在extjs的extend里就是这两种方式混合 但考官问我,这样不是也在子类里加入了对父类函数的引用吗,(会在子类里加上superClass属性)这不是也是污染吗,怎么做更好的...
无需插件或JavaScript的GitHub Pages兼容转录模板(furigana)。 用法 从下载furigana.html文件。 将文件移到_includes文件夹。 像下面的代码一样,使用以下模板: {% include furigana . html text= "测试" ...
抄写平台-osx scribe-platform-osx模块包含一个模板 Mac OS X 应用程序,该应用程序运行 Javascript 文件并提供标准的窗口和菜单 API 以及允许描述和调用本机库的 Objective-C 和 C 桥接器。 设置 依赖项作为 git ...
当前存储库的目的是允许访问基于Dédalo发布系统的非常简单的网站示例,并说明DédaloAPI REST的用法以及如何发出请求并管理原始javascript中的记录。 并不打算提供生产文件,它们只是记住您易于学习的功能样本。 ...
有关更多信息,请参见关于的部分。 yarn build 构建生产到应用程序build文件夹。 它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 最小化构建,文件名包含哈希。 您的应用已准备好进行部署! 有关...
插件:SCRIBE Scribe插件(用于Sarah)使您可以通过Google Chrome... Scribe插件提供了使用Google公认的短语的功能,以便在第三方插件中利用Google。...独立并且完全是实验性的),并通过对笑脸形成的小脸进行动画处理.
棋盘 演示版 目标 该应用程序的目标是使国际象棋棋盘的转录更快,更容易。 特征 接受标准表示法和不区分大小写的捷克语表示法中的移动 可视化棋盘上的最后一个位置 将输入转换为PGN表示法 突出无效的举动 ...
Scrawl.js W3C小组划线员的便捷划线员工具。 安装 在本地克隆存储库,然后在此存储库工作目录中运行以下命令: $ npm i $ npm start 设置 抓取适用于结构如下的目录: 2011-07-04/ ./irc.log ...
在一个风和日丽的下午,刚准备下班,突然接到需求说要做一个在线签协议功能,当时心里想着不就百度一顿拷贝就...最后的思路:一行可以写很多个字,可以让用户滑动canvas,一直写下去(因为协议模板最后还要抄写一段话)
'抄写主机' 运行 scribe 守护进程的主机 'localhost' '抄写端口' scribe 守护进程监听的端口 1463 '抄写类别' 将 Zipkin 跟踪发送到的类别名称 'zipkin' '服务名称' 用于在 Zipkin 跟踪中识别它的服务名称 '...
Dédalo发布模板口述历史的基本Dédalo发布模板的教学示例当前存储库的目的是允许访问基于Dédalo发布系统的非常简单的网站示例,并说明DédaloAPI REST的用法以及如何发出请求并管理原始javascript中的记录。...
构建您的刮板以废除任何网站(对于JavaScript开发人员)。你可以: - 废除无限数量的页面 - 导出和进口项目 - 浏览页面导航列表(适用于:Ajax刷新,页面重新加载和部分重新加载) - 处理CAPTCHA或2 Factor或需要...
抄写器 用CodeSandbox创建
谜 加密或抄写邮件
抄写 打开活页乐谱的存档
抄写员 Scribeline是一个开放源代码的笔记网络应用程序。 ###依赖关系: Node.js MongoDB的 可选:全局nodemon ( sudo npm -g install nodemon ) npm依赖 ###开始抄写员 克隆回购: git clone ...
“ param3”:0表示|| 1要抄写(必填) “ param4”:要加密或要加密的filname(路径)(必填) “ param5”:输出记录的filname(路径)(可选)| 达福(Dafault):“秘密” 结帐密码类以获取帮助 密码算法 AES...
抄写员 91 CSS 名称 描述 作者 星星 1 下一步 108 2 渐进式网络应用程序和移动与网络技术 约书亚1988 24 3 :blue_book: 리디 주식회사의 홈페이지입니다。 里迪 43 4 钠多627 1 文件 名称 描述 作者 星星 1 从 ...
照着书籍抄写的笔记。 自己写的一些小工具和脚本。 版权: 摘自网络的内容,最下面会有原地址链接,版权原作者所有。 部分可能因为疏忽没有标记作者和来源,原作者可以联系我补充版权信息或可移除内容。 关于雅诗写...