`
purpen
  • 浏览: 785677 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript继承机制的实现(一)

阅读更多
    真正的面向对象语言必须支持继承机制,即一个类能够重用(继承)另一个类的方法和属性.javascript既然是面向对象语言,那么就能支持这种继承关系。下面就引入继承机制.

    要用ECMAScript实现继承机制,着先从基类入手.所有开发者定义的类都可以作为基类。出于安全原因,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击.

    因为javascrip中的继承机制并不是明确规定的,而是通过模仿实现的 ,所以你有权决定使用自己最适用的继承方式.

    第一种方式:  对象冒充

    其原理就是:构造函数使用this关键字给所有属性和方法赋值(即采用类声明的构造函数方式)。因为构造函数只是一个函数,所以可使ClassA的构造函数成为ClassB的方法然后调用它.ClassB就会收到ClassA的构造函数中定义的属性和方法.(从而实现继承的功效)

 
  1. //这里其实是把ClassA 作为常规函数来建立继承机制,而不是作为构造函数  
  2. function ClassA(sColor) {  
  3.     // js中函数是对象,对象就会有自己的属性与方法  
  4.     this.color = sColor;  
  5.     this.sayColor = function() {  
  6.         alert(this.color);  
  7.    };  
  8. }  
  9.   
  10.   
  11. function ClassB(sColor, name) {  
  12.     this.newMethod = ClassA;  
  13.     this.newMethod(sColor);  
  14.    //子类在定义新属性与新方法前都必须删除继承的父类,否则可能会覆盖超类的相关属性和方法  
  15.     delete this.newMethod;  
  16.   
  17.     //子类ClassB定义自己的属性与方法  
  18.     this.name = sName;  
  19.     this.sayName = function() {  
  20.         alert(this.name);  
  21.    };  
  22. }  
  23.   
  24. //运行  
  25. var objA = new ClassA("red");  
  26. var objB = new ClassB("blue""hello");  
  27. objA.sayColor();    //输出 "red"  
  28. objB.sayColor();   //输出 "blue"  
  29. objB.sayName();  //输出 "hello"  

    对象冒充方式的继承机制更强的一点就是可以支持多重继承(一个类可以继承多个超类)。实现的方法与继承一个类同样的.
如上例可写成:

 
  1. function ClassB(sColor, name) {  
  2.     //继承ClassA  
  3.     this.newMethod = ClassA;  
  4.     this.newMethod(sColor);  
  5.     delete this.newMethod;  
  6.   
  7.     //继承ClassC 假设ClassC已定义  
  8.    this.newMethod = ClassC;  
  9.    this.newMethod();  
  10.    delete this.newMethod; 
  11.    ......
  12.   

分享到:
评论

相关推荐

    Javascript继承机制详解

    学完了Javascript类和对象的创建之后,现在总结一下Javascript继承机制的实现。Javascript并不像Java那样对继承机制有严格明确的定义,它的实现方式正如它的变量的使用方式那样也是十分宽松的,你可以设计自己的方法...

    JavaScript 继承机制的实现(待续)

    JavaScript继承机制的实现,后期会有一些补充。

    Javascript 继承机制的实现

    选定基类后,就可以创建它的子类了。是否使用基类完全由你决定。有时,你可能想创建一个不能直接使用的基类,它只是用于给子类提供通用的函数...和其他功能一样,ECMAScript中实现继承的方式不止一种。这是因为JavaScr

    javascript继承机制实例详解

    本文实例讲述了javascript继承机制。分享给大家供大家参考。具体分析如下: 初学javascript一般很难理解Javascript语言的继承机制它没有”子类”和”父类”的概念,也没有”类”(class)和”实例”(instance)的...

    阿里巴巴技术文章分享 Javascript继承机制的实现

    主要介绍了阿里巴巴技术文章,分享的是一篇关于Javascript实现继承机制的文章,感兴趣的小伙伴们可以参考一下

    javascript 继承实现方法

    javascript的继承机制并不是明确规定的,而是通过模仿实现的,意味着继承不是由解释程序处理,开发者有权决定最适合的继承方式.

    由浅入深讲解Javascript继承机制与simple-inheritance源码分析

    Javascript语言对继承实现的并不好,需要工程师自己去实现一套完整的继承机制。下面我们由浅入深的系统掌握使用javascript继承的技巧。 1. 直接使用原型链 这是最简粗暴的一种方式,基本没法用于具体的项目中。一个...

    Javascript编程 类的继承及封装:Class

    笔者历经多年javascript的开发,痛彻体会javascript面向对象编程的不便性,精心制作了一个类的定义与继承功能的js,实现了在javascript中对类的定义、继承、封装机制,主要功能特征包括:  一、 统一了类定义的语法...

    JavaScript不使用prototype和new实现继承机制

    主要介绍了JavaScript不使用prototype和new实现继承机制的相关资料,需要的朋友可以参考下

    Javascript继承机制的设计思想分享

    我一直很难理解Javascript语言的继承机制。  它没有”子类”和”父类”的概念,也没有”类”(class)和”实例”(instance)的区分,全靠一种很奇特的”原型链”(prototype chain)模式,来实现继承。  我花了很...

    javascript类继承机制的原理分析

    本文着重解析javascript类继承机制,让你从底层了解javascript是怎样实现“继承”这一概念的。

    基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解

    我们知道JavaScript是面向对象的脚本语言,那么既然是面向对象,继承一定是必不可少的了。JavaScript的核心是ECMAScript,JavaScript继承机制的实现其实就是ECMAScript继承机制的实现

    java学习之JavaScript继承

    然而,继承中所涉及的不仅仅是一个对象,并且 js 也没有继承这一现有的机制,那它如何实现的呢? 原型 在 JavaScript 中,每个构造函数都拥有一个prototype属性,它指向构造函数的原型对象,这个原型对象中有一个 ...

Global site tag (gtag.js) - Google Analytics