`
zha_zi
  • 浏览: 592605 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

js 继承实现

阅读更多

看过很多的js继承实现,发现这段代码的继承实现是比较好的一种,好像跟extjs的继承机制非常相似,

/**

 * 扩展函数

 * @param target 扩展对象

 * @param params 扩展参数

 */

function extend(target, params) {

       if (!target) {

              target = {};

       }

       for (var prop in params) {

              target[prop] = params[prop];

       }    

       return target;

}
 
/**

 * 继承函数

 * @param SuperClass 父类

 * @param overrides 重写方法

 */

function extendClass(SuperClass, overrides) {

       var SubClass = function() {

                // 自动调用构造函数

              this.initialize.apply(this, arguments);

       };

      

       SubClass.prototype = new SuperClass();

      

       extend(SubClass.prototype, overrides);

      

       SubClass.superclass = SuperClass;

      

       return SubClass;

}

 使用方法

var Animal = extendClass(Object, {

       initialize: function(name){

              this.name = name;

       },

   

    showName: function(){ 

        alert(this.name); 

    }

});

 

var Cat = extendClass(Animal, {

       initialize: function(name) {

                // 调用父类构造函数

              Cat.superclass.prototype.initialize.call(this, name);

       }

});

 

var BlackCat = extendClass(Cat, {

       initialize: function(name, type) {

                // 调用父类构造函数

              BlackCat.superclass.prototype.initialize.call(this, name);

              this.type = type;

       },

       showType: function() {

              alert(this.type);

       },

       showName: function() {

              alert(this.name + ":" + this.type);

       }

});

 

 

var cat = new Cat("cat name");

// 继承方法

cat.showName();

 

// true

alert(cat instanceof Animal);

 

// true

alert(cat instanceof Cat);

 

// false

alert(cat instanceof BlackCat);

 

var blackCat = new BlackCat("123", "black");

 

// 方法重写

blackCat.showName();

 

// 自有方法

blackCat.showType();

 

// true

alert(blackCat instanceof Animal);

 

// true

alert(blackCat instanceof Cat);

 

// true

alert(blackCat instanceof BlackCat);
 
分享到:
评论

相关推荐

    js继承实现示例代码

    ### JavaScript继承实现示例 #### 知识点概述 在JavaScript中,继承是一种常见的对象间关系,它允许一个对象(子类)继承另一个对象(父类或超类)的属性和方法。通过继承,可以复用代码、提高程序的可维护性,并...

    13、JavaScript继承实现(二) —— zInherit、xbObjects

    zInherit是一种常用的JavaScript继承实现方式,它通过修改对象的`__proto__`属性来实现继承。`__proto__`指向父对象的原型,从而使得子对象能够访问父对象的属性和方法。但是,`__proto__`并不是所有浏览器都支持的...

    java script 继承的实现

    本文将深入探讨 JavaScript 中的继承实现方式,并结合提供的 "zinherit.js" 文件来解析相关知识点。 在 JavaScript 中,继承主要通过原型链(prototype chain)、构造函数继承、组合继承、原型式继承、寄生式继承、...

    js继承的实现

    js没有特别明确的实现如何继承,但是能够通过特殊手段实现继承的,有四种方法

    javascript 原生态js类继承实现的方式

    而实例则是类的一个具体实现。 我们还知道,面向对象编程有三个重要的概念 - 封装、继承和多态。 但是在JavaScript的世界中,所有的这一切特性似乎都不存在。 因为JavaScript本身不是面向对象的语言,而是基于对象...

    javascript中如何实现封装,继承和多态

    javascript中如何实现封装,继承和多态

    JS继承的实现方式

    下面将详细介绍几种常见的继承实现方式,并探讨它们的特点与应用场景。 #### 一、原型链继承 **核心思想**: 将父类的实例设置为子类的原型。 **实现方式**: ```javascript function Animal(name) { this.name = ...

    详解Javascript继承的实现

    本文从以下四个方面展开话题: ...正因如此,我从没想过下次写继承的时候,我要换一种方式来写,直到今天晚上看了三生石上关于javascript继承系列的文章(出的很早,现在才看,真有点可惜),才发现在js里

    classy.js:一个简单的 Javascript 继承实现

    Classy 是一个 Javascript 继承实现。 这几乎就是你需要知道的一切。 您将获得一种在代码中实现 Javascript 类的简单方法以及一个有用的“包含”方法。 ##例子 ###Building.js Class ( "Building" , { //...

    javascript 继承实现方法

    JavaScript中的继承实现方法还有很多,例如ES6中的class关键字,背后其实也是通过原型链实现的。同时,基于JavaScript的动态特性,也允许我们实现更加灵活多变的继承方式,例如通过Object.create、Object.assign等...

    JavaScript实现继承的几种方式

    本篇文章将深入探讨JavaScript中实现继承的几种常见方式。 1. 原型链继承 JavaScript的原型(prototype)机制是实现继承的基础。每个函数都有一个prototype属性,这个属性指向一个对象,这个对象的属性和方法可以被...

    js继承.doc

    本文档将探讨JavaScript中的继承实现方式及其优缺点。 首先,我们需要理解JS中的对象与类的区别。在JS中,对象可以直接通过字面量语法创建,例如`var myObj = {...}`,这种对象不能通过`new`关键字实例化,因此它...

    【JavaScript的9种继承实现方式归纳】js实现继承的几种方式.pdf

    JavaScript 的 9 种继承实现方式归纳 JavaScript 中的继承方式是基于原型的,与基于类的编程语言,如 C++ 和 Java,截然不同。JavaScript 的灵活性使得其实现继承的方式非常多样化。本文将介绍 JavaScript 中的 9 ...

    JS继承实现方法及优缺点详解

    除此之外,JavaScript还提供了其他继承实现方式,如**组合继承**(结合了构造继承和原型链继承的优点,但存在两次调用父类构造函数的开销),**寄生组合继承**(通过寄生构造函数解决组合继承的重复调用问题),以及...

    Javascript 继承实现例子

    在真正的Web站点和应用程序中,几乎不可能创建名为ClassA和ClassB的类,更可能的是创建表示特定事物(如形状)的类。考虑本章开头所述的形状的例子,Polygon、Triangle和Rectangle类就构成了一组很好的探讨数据。

    JavaScript学习之三 — JavaScript实现继承的7种方式

    在JavaScript中,面向对象编程是实现复杂功能和代码复用的关键。继承是面向对象的核心特性之一,它...文章中的`inheritance.html`和`inheritance.js`文件可能包含示例代码,帮助你直观地了解每种继承方式的实现和使用。

    js继承的用法

    根据提供的文件信息,我们可以分析并总结出关于JavaScript继承的一些关键知识点。尽管提供的代码示例主要关注于使用jQuery插件初始化一个表格(grid),但这里我们将重点放在如何在JavaScript中实现继承这一主题上。...

    Javascript中3种实现继承的方法和代码实例_.docx

    本文将探讨三种主要的JavaScript继承实现方式:对象冒充、原型继承以及两者的混合。 ### 一、对象冒充 对象冒充是通过调用父类构造函数并利用`this`关键字来实现继承的一种方法。这种方法的核心在于,子类构造函数...

    js 实现类式继承

    在JavaScript中,实现类式继承是面向对象编程中的一个关键概念。JavaScript本身是一种基于原型的动态类型语言,但在ES6引入了`class`语法糖,使得类的概念更加清晰,但其实质仍然是基于原型的继承。下面我们将深入...

Global site tag (gtag.js) - Google Analytics