`

javascript oop编程 — 实现继承的三种形式(1)

 
阅读更多

(1)模拟类的方式, 我们都知道js是原型继承机制,不存在class和instance分离的这种方式
假设,我们有两个类

function  Animal(){
        this.name = “animal”;
        this.eat = function(){
                consle.log(“eating");
         }
}

function Cat(){
        this.say = function(){
                console.log(“miao miao!!");
         }
}

如果我们想要Cat 拥有Animal 的name属性和eat方法,只需要
Cat.prototype = new Animal();
但是这不是一个好的实践,想想看,如果还有一个Duck类,难道还要new一个Animal来继承吗,其他种种如此继续吗?如果Animal 构造函数需要传递参数呢? 
正确的作法是将通用的内容放到prototype里面,所有的子嗣,只需要将自己的prototype指向一个通用的prototype来实现继承。

如下,
Animal.prototype = {
        name:”animal”,
        eat:function(){
                console.log(“eating");
         }
}

Cat.prototype = Animal.prototype;

Object为我们提供了一个通用的继承函数(支持成都有差异),通过一个指定的原型创建一个对象
Object.create   很遗憾并不是所有浏览器都支持,手工改一下:

var inherit = Object.create || function(proto){
        function F(){};
        F.prototype = proto;
        return new F
}

于是上面的例子可以写成

Cat.prototype = inherit(Animal.prototype);
——————————
上面这样做,会出现Cat.prototype.constructor = F 的情况,我们需要拨乱反正,不如再写一个封装,专门来实现继承

var  extend = function(Child,Parent){
        Child.prototype = inherit(Parent.prototype);
        Child.prototype.constructor = Child;
}

很多第三方那个库的extend函数就是这么实现的

分享到:
评论

相关推荐

    javascript oop模式讲解

    JavaScript OOP(面向对象编程)模式是编程领域中一种重要的设计思想,它允许开发者通过类和对象来组织和管理代码,提高代码的可重用性和可维护性。在这个讲解中,我们将深入探讨JavaScript中的OOP模式,特别是如何...

    Javascript的OOP编程

    JavaScript的面向对象编程(Object-Oriented Programming, OOP)是一种强大的编程范式,它允许开发者创建复杂的结构和数据模型,提高代码的可维护性和复用性。在JavaScript中,OOP主要通过构造函数、原型链、封装、...

    Javascript面向对象编程.

    在JavaScript中,面向对象主要通过以下三种方式实现: 1. **构造函数(Constructor)**:构造函数是一种特殊的函数,用于创建和初始化对象。我们可以通过`new`关键字来调用构造函数,创建一个新的对象实例。例如: ...

    Javascript oop设计模式 面向对象编程简单实例介绍

    JavaScript中的面向对象编程(OOP)是一种强大的编程范式,它允许我们以更接近现实世界的方式来组织代码。在JavaScript中,我们通常通过构造函数、原型和封装等概念来实现OOP。 首先,让我们看下传统的JavaScript...

    JavaScript学习深入—面向对象编程

    虽然JavaScript本身并不是一种传统的面向对象语言,但它通过原型继承机制支持OOP。每个对象都有一个原型,原型可以是一个对象,也可以是一个构造函数。通过这种方式,JavaScript支持继承、封装和多态等面向对象编程...

    Javascript(OOP).rar_javascript_javascript O_oop javascript

    JavaScript,作为一种广泛应用于Web开发的动态编程语言,其面向对象编程(Object-Oriented Programming,简称OOP)特性是理解其高级用法的关键。本文档深入探讨了JavaScript中的面向对象特性,包括类、对象、继承、...

    javascript 原型模式实现OOP的再研究

    JavaScript中的原型模式是一种实现面向对象编程(OOP)的关键机制,它基于原型继承,使得对象可以从其他对象那里获得属性和方法。在这个模式下,每个函数都有一个`prototype`属性,这个属性是一个对象,用于共享属性...

    JavaScript面向对象编程案例

    面向对象编程(Object-Oriented Programming,OOP)是一种强大的编程范式,它基于“对象”的概念,允许我们通过封装数据和方法来组织代码。在JavaScript中,面向对象编程并不是原生支持的,但它可以通过模拟类和对象...

    JavaScript与OOP讲座

    在JavaScript中,我们可以通过以下三种方式实现OOP: 1. **构造函数**:JavaScript中的构造函数是一种特殊类型的函数,用于创建和初始化新对象。我们通过`new`关键字来调用构造函数,如`var obj = new ...

    oop与javascript

    在JavaScript中实现OOP主要依赖于原型继承和类的概念。 ##### 1. 对象与类 - **对象**:是具有属性和行为的实体。在JavaScript中,一切皆为对象。 - **类**:定义了一组拥有相同属性和方法的对象模板。虽然原生...

    JavaScript面向对象编程指南(第2版).rar

    继承是JavaScript中实现代码复用的一种方式。通过原型链机制,一个对象可以“继承”另一个对象的属性和方法。原型(prototype)是JavaScript中的关键概念,每个对象都有一个隐式的__proto__属性,指向其构造函数的...

    JavaScript OOP类与继承

    JavaScript中的面向对象编程(Object-Oriented Programming, 简称OOP)是构建复杂应用程序的重要方式。在JavaScript中,类和继承是OOP的核心概念,它们帮助我们组织和复用代码,创建复杂的对象结构。 类在...

    javascript面向对象编程.pdf

    JavaScript被设计成一种彻底的面向对象语言,尽管它的使用和接受过程中发生了发展和变化,吸引了其他如Ruby、Python、Perl等语言的程序员将他们的编程模式带入JavaScript。 JavaScript的面向对象编程与其他支持对象...

    JavaScript面向对象编程指南 pdf

    JavaScript是一种广泛应用于Web开发的脚本语言,尤其在构建交互式网页和动态网站时不可或缺。面向对象编程(Object-Oriented Programming,OOP)是JavaScript中的一个重要概念,它允许开发者以更加模块化、可复用的...

    韩顺平javascript笔记(最全整理 dom编程 oop 基础语法)

    此外,JavaScript还有封装(使用函数和作用域来隐藏内部实现)、继承(通过原型或class关键字)和多态(一个接口,多种实现)等OOP特性。理解这些概念能帮助开发者设计出更加灵活和复用性强的代码结构。 再来谈谈...

    javascript与OOP__PPT

    在JavaScript中,面向对象编程(OOP)是一种重要的编程范式,它允许开发者创建具有封装性、继承性和多态性的复杂结构。本PPT主要介绍了JavaScript中的OOP概念,包括Function对象的apply方法、自定义对象、封装、继承...

    JavaScript与OOP

    在JavaScript的世界里,面向对象编程(Object-Oriented Programming, OOP)是一种重要的编程范式,它允许开发者创建可复用、可维护的代码结构。 **面向对象编程基础** OOP的核心概念包括类、对象、封装、继承和多态...

    EX OOP 编程

    面向对象编程是一种编程范式,它以对象为中心,通过封装、继承和多态等特性来组织代码,使程序更易于理解和维护。 【描述】虽然描述中没有具体信息,但通常在讨论OOP时,我们关注以下几个核心概念: 1. **封装**:...

    javascript面向对象编程pdf

    JavaScript与其它传统面向对象语言在形式和实现上有所区别,但它们共享了很多面向对象编程的基本原则,如类、继承、封装、多态等。JavaScript通过函数和原型链来模拟传统意义上的类和继承,从而实现了面向对象的特性...

    JavaScript面向对象编程指南

    JavaScript是一种广泛应用于Web开发的动态、弱类型的语言,它的面向对象编程能力是其核心特性之一。面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它基于“对象”的概念,允许程序员创建数据...

Global site tag (gtag.js) - Google Analytics