`
cuitongxin
  • 浏览: 27081 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JavaScript 原理详解之类继承

    博客分类:
  • js
js 
阅读更多

/**

 * 主要讲述继承机制的实现问题

 * @author cuitongxin

 */

 

/**

 * 1、对象冒充的方式

 * 原理:

 * 构造函数使用this来给所有的属性和方法赋值,因为构造函数只是一个函数,所以是一个构造函数可以成为

 * 另一个对象的方法,然后在对象中像普通方法一样调用它,该构造方法就会把在它构造函数中定义的属性和方法传递给当前的对象,

 * 当前对象就拥有了构造函数中的所有属性和方法。

 * 注意:

 * 对象中新的属性和方法,要在delete之后定义。

 * 该种继承方式支持多继承的形式。

 */

function ClassA (sdf) {

this.ss = sdf;

this.showMsg = function() {

alert(this.ss);

};

}

function ClassB (tt) {

this.newMethod = ClassA;

this.newMethod(tt);

delete this.newMethod;

}

 

 

/**

 * 2、call 方法

 * 说明:它的第一个参数用作调用call的函数内的this对象所指的对象。其他的参数直接传递给调用call的函数自身。

 * 上例子中的代码可以简化为如下形式

 */

function ClassB (tt,ss) {

ClassA.call(this,tt);

this.ss = ss;

this.showMsg2 = function() {

alert(ss);

};

}

 

/**

 * 3、apply方法

 * 说明:该方法同样第一参数为this对象,第二个参数为传递给调用者的数组。

 * 实现的代码同上

 */

 

 

/**

 * 4、原型链

 * 说明:原型中的所有属性和方法都将被传递给该类的所有实例。

 * 注意:构造函数中没有参数。

 */

function ClassA () {

}

ClassA.prototype.ss = "ss";

ClassA.prototype.showMsg = function () {

alert(this.ss);

};

function ClassB () {

}

ClassB.prototype = new ClassA();

 

/**

 * 5、混合的方式: 原型链 / 冒充方法

 * 这样就不需要考虑原型链中不能带参数的情况了

 */


分享到:
评论

相关推荐

    JavaScript 继承 封装 多态实现及原理详解

    以下是对这些特性的详细介绍,以及在JavaScript中如何实现和原理的探讨。 封装是面向对象编程的基石之一。它通过类(class)的概念将数据(属性)和操作数据的函数(方法)封装在一起,形成一个整体,从而隐藏对象...

    JavaScript ES6 Class类实现原理详解

    类的继承是面向对象编程的核心之一,ES6通过extends关键字简化了继承的实现。子类继承父类之后,会获得父类的所有方法和属性。如果子类没有定义constructor方法,会默认添加一个,其中会调用super()来继承父类的...

    JavaScript 使用详解

    JavaScript支持基于原型的面向对象编程,包括构造函数、原型链、继承和封装等概念。ES6引入了类(class)语法,使面向对象编程更符合传统思维。 7. **ES6及新特性** ES6(ECMAScript 6)引入了许多新特性,如箭头...

    JavaScript是如何实现继承的(六种方式)_.docx

    ### JavaScript中的六种继承方式详解 #### 一、引言 在面向对象编程语言中,继承是一种非常重要的机制,它允许我们定义一个类去继承另一个类的特性(属性和方法)。这种特性使得代码复用变得可能,提高了软件开发...

    javascript 原型链维护和继承详解

    JavaScript的原型继承模式与传统面向对象编程的类继承模式有本质区别。在JavaScript中,继承是基于原型的,意味着每一个对象都有一个内部链接指向另一个对象,而后者称为前者的原型。当尝试访问一个对象的属性时,...

    JavaScript实战.pdf 中文完整版

    JavaScript,作为全球最广泛使用的编程语言之一,是前端开发的核心技术,也是许多后端和全栈开发者的必备技能。本书“JavaScript实战.pdf 中文完整版”深入浅出地介绍了JavaScript在实际项目中的应用,旨在帮助读者...

    Javascript原型链及instanceof原理详解

    与传统的基于类的语言不同,JavaScript中的对象直接继承自其他对象,这种机制被称为原型继承。 在JavaScript中,每个对象都拥有一个原型(prototype),这个原型自身也是拥有原型的,从而形成了一个原型链...

    JS 类的创建继承 与 new原理实现

    JavaScript深入之创建对象的多种方式以及优缺点 js new一个对象的过程,实现一个简单的new方法 (一)类的创建 1. 工厂模式 function createPerson(name){ //原料: var obj=new Object(); //加工: obj.name=name...

    javascript 设计模式之组合模式原理与应用详解

    而树枝节点(Composite)除了包含子节点的数组外,还实现了Add、Remove等方法来管理子节点,同时也提供了如GetList之类的方法来获取所有子节点。 组合模式的应用场景相当广泛。比如自然界中的树、操作系统中的目录...

    JavaScript Web Application

    - 探讨如何创建模块化的 JavaScript 类,并添加功能和方法。 - 讨论原型继承的概念以及如何在类库中实现。 - 分析函数调用机制及作用域控制。 - 探索如何在类库中添加私有函数。 - **第 2 章:事件与观察者模式...

    javascript prototype原型详解(比较基础)

    JavaScript中的`prototype`原型是理解面向对象编程的关键概念之一,尤其在JavaScript中,它是一种实现对象继承的方式。本文将深入探讨`prototype`的基本概念、作用以及通过代码实例来阐述其工作原理。 首先,每个...

    JavaScript代码复用模式详解

    对象组合是指将不同的对象组合在一起,以形成新的功能,而类继承则是指一个类继承另一个类的属性和方法。 JavaScript作为一种基于原型的编程语言,与基于类的语言有所不同。JavaScript中不存在类的概念,对象是通过...

Global site tag (gtag.js) - Google Analytics