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

用原型实现javascript中的继承

 
阅读更多

做了三年php,因为工作需要,目前要转javascript。前段时间去面试的时候遇到在javascript中实现继承的题,当时答的也不好,回来找了些资料,做个整理。

 

《javascript语言精粹》一书是提到了一点,使用伪类的方式来实现继承,大概就是构造一个伪类继承自基类,然后再定义它的constructor函数,并替换它的prototype为一个基类的实例来实现,但是这样就会有很多"无谓的"prototype操作细节。

 

Function.method('new', function(){
    // 创建一个新对象,它继承自构造函数的原型对象
    var that = Object.beget(this.prototype);

    // 调用构造函数,绑定this到新对象上
    var other = this.apply(that, arguments);

    // 如果返回的不是一个对象,就返回这个新对象
    return (typeof other === 'object' && other) || that;
});

// 定义一个构造函数并扩充它的原型
var Mammal = function(name){
    this.name = name;
};

Mammal.prototype.get_name = function(){
    return this.name;
};

Mammal.prototype.says = function(){
    return this.saying || '';
};

// 构造一个实例
var myMammal = new Mammal('Herb the Mammal');
var name = myMammal.get_name();

var Cat = function(name){
    this.name = name;
    this.saying = 'meow';
};

// 替换Cat.prototype为一个新的Mammal实例
Cat.prototype = new Mammal();

// 扩充原型对象,增加方法
Cat.prototype.eat = function(){
    // other
};

Cat.prototype.get_name = function(){
    // other
};

var myCat = new Cat('mimi');
var says = myCat.says(); // 'meow'
var name = myCat.get_name();
myCat.eat();

分享到:
评论

相关推荐

    浅析JavaScript实现基于原型对象的“继承”.pdf

    原型对象是JavaScript继承机制的核心。 寄生组合模式 基于原型的继承有一个缺陷,那就是它不能够很好地支持多继承。如果我们想要实现多继承,我们可以使用寄生组合模式。寄生组合模式是通过组合原型对象和构造函数...

    javascript原型继承代码案例

    javascript原型继承,prototype的使用,可以像java一样继承

    理解Javascript原型继承原理

    在JavaScript中,原型继承是一种非常核心且独特的机制,它使得对象能够继承其他对象的属性和方法。本文旨在深入探讨这一机制,并通过具体的示例代码帮助读者更好地理解其中的概念。 #### 二、基本概念 在JavaScript...

    JavaScript实现继承的几种方式

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

    深入探索JavaScript的原型继承:机制、实现与最佳实践

    本文将深入探讨JavaScript原型继承的工作原理、实现方式以及在现代Web开发中的应用。 JavaScript的原型继承是一种强大且灵活的机制,它允许对象之间共享功能和行为。通过深入理解原型继承的工作原理和实现方式,...

    学习javascript面向对象 javascript实现继承的方式

    本文将详细介绍六种实现JavaScript继承的方法。 1. 原型链继承 原型链继承是通过改变子类型的原型对象来实现继承的。子类型构造函数的原型被替换为超类型构造函数的一个实例,这样子类型就可以继承超类型的所有属性...

    再谈javascript原型继承

    Javascript原型继承是一个被说烂掉了的话题,但是自己对于这个问题一直没有彻底理解,今天花了点时间又看了一遍《Javascript模式》中关于原型实现继承的几种方法,下面来一一说明下,在最后我根据自己的理解提出了一...

    JavaScript中的原型和继承详解(图文)_.docx

    这使得 JavaScript 中的对象可以继承原型对象的方法和属性,从而实现代码的重用和简洁。 四、原型链 在 JavaScript 中,原型对象可以形成一个链式结构,即一个对象的原型对象可以有自己的原型对象,以此类推。这...

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

    原型链是JavaScript实现继承的基础。每个函数都有一个`prototype`属性,这个属性是一个对象,它的`__proto__`属性指向创建该函数的构造函数的原型。当试图访问一个对象的属性时,JavaScript会首先在当前对象中查找,...

    浅析Javascript原型继承 推荐第1/2页

    在JavaScript中,继承主要通过原型链实现。首先,我们需要区分几个重要概念:函数(Function),对象(Object),构造器(Constructor),以及实例(Instance)。在JavaScript中,函数实际上也是一种特殊的对象,它...

    浅析javascript原型继承机制

    在JavaScript中,并没有直接提供类的概念,而是通过原型来实现继承。本文将深入探讨JavaScript中的原型继承机制,帮助读者理解其中的关键概念及其工作原理。 #### 二、原型与构造函数 在JavaScript中,每个函数都...

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

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

    探索JavaScript的原型链:原型继承的奥秘

    在JavaScript中,原型继承是实现对象间属性和方法共享的关键。 **JavaScript的主要特点:** 1. **解释型语言**:JavaScript代码通常在浏览器中由JavaScript引擎解释执行,无需预先编译。 2. **基于原型的继承**:...

    javascript原型继承工作原理和实例详解_.docx

    其独特的面向对象机制是通过原型继承来实现的,这种机制使得JavaScript能够灵活地处理对象之间的继承关系。本文将深入探讨JavaScript中的原型继承原理,并通过具体的代码示例来帮助读者理解这一概念。 #### 二、...

    Javascript原型继承

    JavaScript原型继承是面向对象编程在JavaScript中的实现方式之一,它基于原型(Prototype)和对象的特性,使得一个对象可以继承另一个对象的属性和方法。在JavaScript中,每个对象都有一个特殊的内部属性`[...

    JavaScript继承机制研究.pdf

    在本文中,我们将深入探讨JavaScript继承机制的实现方式,并对基于原型的继承、构造函数方式继承、组合继承、寄生式继承等继承机制进行了总结归纳和分析。 基于原型的继承 JavaScript是一门基于原型的语言,它不像...

    JavaScript使用原型和原型链实现对象继承的方法详解

    以上三种模式都是JavaScript中实现对象继承的常见方法。在实际开发中,为了更好地管理和优化代码,还可以使用类(class)语法(ES6引入),它提供了更接近传统面向对象语言的语法糖,但底层仍然是基于原型和原型链的...

Global site tag (gtag.js) - Google Analytics