`
alucardggg
  • 浏览: 8920 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Javascript继承讨论(方法覆盖),以及如何对FireFox3.6.3的兼容(可能是FF3.6.3的BUG)

阅读更多
使用prototype.js(1.5.1)来实现 Javascript的类继承,而把浏览器升级到Firefox3.6.3,发现类的继承并不能在新版本FF(3.6.3)中实现
以下为使用Javascript的类继承的用法:
假设用JS来展现文件树形结构,
在js.widget这个名字空间下面

/*
展现文件系统的树
*/
js.widget.Tree = Class.create();
js.widget.Tree.prototype.initialize = function() {
  ..... 构造器,在此省略若干代码
}
js.widget.Tree.prototype.render = function() {
  ..... 渲染方法
}

/*
  具有排序功能的树,从js.widget.Tree中继承
*/
js.widget.SortableTree = Class.create();
/*
  使用prototype.js中的Object.extend进行类扩展
*/
Object.extend(js.widget.repository.SortableTree,
js.widget.repository.Tree);

/*
对于render方法进行覆盖,先调用父类的方法逻辑,然后加上子类的逻辑,使用句柄传递
先保存父类的方法
*/
js.widget.SortableTree.prototype._render = js.widget.Tree.prototype.render;
js.widget.SortableTree.prototype.render = function() {
   /*
     调用父类方法
   */
   this._render();
   .....省略若干代码
}

这样既可实现类的继承功能
问题是在FIREFOX3.6.3下面,会抛出exception,提示 “initialize”方法没有定义
在prototype.js里面可知,类的继承,仅仅只是属性赋值,即是:
Object.extend = function(destination, source) {

  for (var property in source) {
    destination[property] = source[property];
  }
  return destination;
}

遍历source的属性,然后赋值给destination,此方式在最新的firefox3.6.3下不可用,原因是因为
“prototype”属性在3.6.3下面,无法通过遍历获得(有关prototype属性的讨论请参见我另一篇文章)
要解决这个问题,则显式的指定prototype复制即可,代码如下:
Object.enhanceExtend = function(destination, source) {
    if(Prototype.Browser.IE) {
          for (var property in source) {
              destination[property] = source[property];
          }
/*
显式赋值
*/
          destination.prototype = source.prototype;
          return destination;
    } else {
          for (var property in source) {
                destination[property] = source[property];
/*
显式赋值
*/
                destination.prototype = source.prototype;
              }
          return destination;
    }

}
即可解决这个问题,希望所有在firefox3.6.3下遇到这个问题的朋友,都能解决这个问题


分享到:
评论

相关推荐

    Firefox_3.6.3

    Firefox 3.6.3是其历史上的一个稳定版本,它带来了多项改进和新特性,包括更快的页面加载速度、更好的JavaScript性能以及对HTML5部分特性的支持。此外,该版本还提升了安全性,修复了多个安全漏洞,保护用户免受恶意...

    Firefox 3.6.3 英文版

    Firefox 3.6.3 英文版 Firefox 3.6.3 英文版 Firefox 3.6.3 英文版 Firefox 3.6.3 英文版

    Firefox 3.6.3 and Web dev add-ons

    标题“Firefox 3.6.3 and Web dev add-ons”提到了Firefox浏览器的3.6.3版本,这是Mozilla Firefox浏览器的一个稳定版本,发布于2010年,旨在提供更好的性能、安全性和用户界面改进。它包含了对HTML、CSS、...

    Firefox火狐浏览器官方3.6.3-win32版本exe安装包

    《Firefox火狐浏览器3.6.3-win32版本安装详解》 Firefox火狐浏览器,作为全球知名的开源网络浏览器,以其强大的安全性、可定制性和开放性深受用户喜爱。本文将详细解析Firefox 3.6.3-win32版本的安装过程,帮助用户...

    Firefox火狐浏览器官方3.6.3plugin1-win32版本exe安装包

    《Firefox火狐浏览器3.6.3plugin1-win32版本安装详解》 Firefox火狐浏览器,作为全球知名的开源浏览器,以其高度定制性、安全性和稳定性深受用户喜爱。本资源提供的"Firefox火狐浏览器官方3.6.3plugin1-win32版本...

    Firefox火狐浏览器官方3.6.3-mac版本dmg安装包

    在“Firefox火狐浏览器官方3.6.3-mac版本dmg安装包”中,我们主要讨论以下几个关键知识点: 1. **DMG文件格式**:DMG是苹果Mac OS X操作系统中的一种镜像文件格式,类似于Windows系统中的ISO文件。它用于分发软件,...

    firefox3.6.3

    firefox3.6.3最新版 下载地址: http://dl1.g-fox.cn/chinaedition/releases/partners/taobao/20100531/taobao-firefox-go365.exe(复制到地址栏) 适用于Windows操作系统

    Firefox火狐浏览器官方3.6.3plugin1-mac版本dmg安装包

    标题中的“Firefox火狐浏览器官方3.6.3plugin1-mac版本dmg安装包”指的是一款专为苹果Mac操作系统设计的Firefox浏览器的老版本安装程序。Firefox是由Mozilla开发的一款开源网络浏览器,以其安全性、隐私保护和高度...

    Firefox V3.6.3

    Firefox V3.6.3,并附一个CHM Reader 插件。

    firefox firebug

    Firefox 3.6.3是Mozilla Firefox浏览器的一个重要更新,它提供了更好的性能优化、安全修复以及对Web标准的支持。而Firebug 1.7则在前一版本的基础上增加了更多功能,如改进了CSS编辑器、增强了JavaScript调试工具等...

    firefox-3.6.3.source.tar.bz2

    firefox-3.6.3.source.tar.bz2firefox-3.6.3.source.tar.bz2

    火狐浏览器中国版3.6.3

    最新的火狐浏览器中国版 强大的魔镜功能 以及各种各样的插件,让你上网High个够……

    FirefoxSetup_cn_3.6.3.zip

    4. **安全性**:Firefox 3.6.3对安全漏洞进行了修复,保护用户免受恶意攻击,例如跨站脚本(XSS)过滤器的增强,提升了用户在浏览互联网时的安全性。 5. **用户界面**:Firefox 3.6提供了更加流畅的用户界面,包括...

    maven3.6.3.zip

    **Apache Maven 3.6.3 深度解析** Apache Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。Maven通过提供一个标准化的项目对象模型(Project Object Model,POM)以及一套插件,使得构建、依赖管理...

    代码统计linecount3.6.3

    《代码统计工具LineCount3.6.3深度解析》 在软件开发过程中,代码统计是一项不可或缺的任务,它有助于我们理解代码的规模、复杂性以及维护性。LineCount3.6.3是一款简单易用的代码统计工具,尤其适用于开发者和项目...

    apache-maven-3.6.3-bin

    apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-...

    阿里云maven 3.6.3稳定版

    阿里云Maven 3.6.3稳定版是一款专为开发者设计的软件构建工具,尤其适合在中国境内的用户使用。Maven是Java开发中的一个重要组件,它自动化了项目的构建、依赖管理和项目信息管理,极大地提高了开发效率。Maven通过...

    maven资源包3.6.3

    maven资源包3.6.3

Global site tag (gtag.js) - Google Analytics