做了三年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继承机制的核心。 寄生组合模式 基于原型的继承有一个缺陷,那就是它不能够很好地支持多继承。如果我们想要实现多继承,我们可以使用寄生组合模式。寄生组合模式是通过组合原型对象和构造函数...
javascript原型继承,prototype的使用,可以像java一样继承
在JavaScript中,原型继承是一种非常核心且独特的机制,它使得对象能够继承其他对象的属性和方法。本文旨在深入探讨这一机制,并通过具体的示例代码帮助读者更好地理解其中的概念。 #### 二、基本概念 在JavaScript...
本篇文章将深入探讨JavaScript中实现继承的几种常见方式。 1. 原型链继承 JavaScript的原型(prototype)机制是实现继承的基础。每个函数都有一个prototype属性,这个属性指向一个对象,这个对象的属性和方法可以被...
本文将深入探讨JavaScript原型继承的工作原理、实现方式以及在现代Web开发中的应用。 JavaScript的原型继承是一种强大且灵活的机制,它允许对象之间共享功能和行为。通过深入理解原型继承的工作原理和实现方式,...
本文将详细介绍六种实现JavaScript继承的方法。 1. 原型链继承 原型链继承是通过改变子类型的原型对象来实现继承的。子类型构造函数的原型被替换为超类型构造函数的一个实例,这样子类型就可以继承超类型的所有属性...
Javascript原型继承是一个被说烂掉了的话题,但是自己对于这个问题一直没有彻底理解,今天花了点时间又看了一遍《Javascript模式》中关于原型实现继承的几种方法,下面来一一说明下,在最后我根据自己的理解提出了一...
这使得 JavaScript 中的对象可以继承原型对象的方法和属性,从而实现代码的重用和简洁。 四、原型链 在 JavaScript 中,原型对象可以形成一个链式结构,即一个对象的原型对象可以有自己的原型对象,以此类推。这...
原型链是JavaScript实现继承的基础。每个函数都有一个`prototype`属性,这个属性是一个对象,它的`__proto__`属性指向创建该函数的构造函数的原型。当试图访问一个对象的属性时,JavaScript会首先在当前对象中查找,...
在JavaScript中,继承主要通过原型链实现。首先,我们需要区分几个重要概念:函数(Function),对象(Object),构造器(Constructor),以及实例(Instance)。在JavaScript中,函数实际上也是一种特殊的对象,它...
在JavaScript中,并没有直接提供类的概念,而是通过原型来实现继承。本文将深入探讨JavaScript中的原型继承机制,帮助读者理解其中的关键概念及其工作原理。 #### 二、原型与构造函数 在JavaScript中,每个函数都...
JavaScript中的原型模式是一种实现面向对象编程(OOP)的关键机制,它基于原型继承,使得对象可以从其他对象那里获得属性和方法。在这个模式下,每个函数都有一个`prototype`属性,这个属性是一个对象,用于共享属性...
在JavaScript中,原型继承是实现对象间属性和方法共享的关键。 **JavaScript的主要特点:** 1. **解释型语言**:JavaScript代码通常在浏览器中由JavaScript引擎解释执行,无需预先编译。 2. **基于原型的继承**:...
其独特的面向对象机制是通过原型继承来实现的,这种机制使得JavaScript能够灵活地处理对象之间的继承关系。本文将深入探讨JavaScript中的原型继承原理,并通过具体的代码示例来帮助读者理解这一概念。 #### 二、...
JavaScript原型继承是面向对象编程在JavaScript中的实现方式之一,它基于原型(Prototype)和对象的特性,使得一个对象可以继承另一个对象的属性和方法。在JavaScript中,每个对象都有一个特殊的内部属性`[...
在本文中,我们将深入探讨JavaScript继承机制的实现方式,并对基于原型的继承、构造函数方式继承、组合继承、寄生式继承等继承机制进行了总结归纳和分析。 基于原型的继承 JavaScript是一门基于原型的语言,它不像...
以上三种模式都是JavaScript中实现对象继承的常见方法。在实际开发中,为了更好地管理和优化代码,还可以使用类(class)语法(ES6引入),它提供了更接近传统面向对象语言的语法糖,但底层仍然是基于原型和原型链的...