`
lp895876294
  • 浏览: 284757 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

JS继承

    博客分类:
  • JS
 
阅读更多

基于构造函数的继承
       call方法
      语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]])
      定义:调用一个对象的一个方法,以另一个对象替换当前对象。
      说明: call() 方法是与经典的对象冒充方法最相似的方法,它的第一个参数用作 this 的对象,其他参数都直接传递给函数自身。
       apply方法
       语法:apply([thisObj[,argArray]])
       定义:应用某一对象的一个方法,用另一个对象替换当前对象。
       说明:如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

       参考实例:

(function(){
	//生物
	function Biology(){
		this.isBeing = true ;
	}
	//动物
	function Animal(){
	}
	Animal.prototype = new Biology() ;
	
	function Cat(){
//		此种方式只是单纯属性的继承,Cat不是Animal的子类
		Animal.call(this);
	}
	
	var cat = new Cat() ;
//	验证Cat不是Animal的子类
	alert(cat instanceof Animal);
	alert("cat 是否具有Biology的属性 -> "+cat.isBeing);
	
	function Human(){
		
	}
//	Human继承自Animal类,是Animal的一个子类
	Human.prototype = new Animal() ;
	
	var human = new Human() ;
	
	alert(human instanceof Animal);
	alert("human 是否具有Biology的属性 -> "+human.isBeing);
	
})() ;

        不管是用call还是apply实现的继承,都是通过调用构造函数,改变执行构造函数的this对象,实现对象属性的填充。而当前类并不是父类的子类,并且不能继承父类原型中的属性和方法。


原型链方式的继承
       通过设置构造函数的prototype的对象实例,当前类具有父类及其原型类中的所有属性和方法,但是prototype的函数实例的构造函数中的参数必须是固定的。类似于Java面向对象的继承。

       参考实例

//使用原形链和构造函数的方式实现继承
(function(){
	Function.prototype.extend = function(parent){
//		添加一个中间类,避免原型被污染
		var MediumObj = function(){
		};
//		根据函数参数构造父类
		MediumObj.prototype = new parent(arguments[1]) ;
//		指定当前类的父类为MediumObj,这样如果this的实例化对象为父类添加或改变
//		属性首先是在MediumObj中对属性进行添加或修改,不影响parent,也就避免
//		修改parent的属性对this实例化对象的影响
		this.prototype = new MediumObj() ;
//		返回当前对象的构造函数
		return this ;
	};
//	父亲
	function Parent(name){
		this.name = name ;
		this.money = "1w" ;
	}
//	儿子,儿子不具有父亲的money,但是我们要实现父亲的money就是child的money
	function Child(name){
		this.name = name ;
	};
//	只有有父母的孩子才是宝
	var FullChild = Child.extend(Parent,"baba") ;
//	创建child实例
	var child = new FullChild("child");
//	child具有父亲的属性
	alert(child.name +"  "+child.money);
//	child是Child对象,也是Parent对象
	alert((child instanceof Child)+"    "+(child instanceof Parent));
})() ;

     在遍历类对象过程中,不仅会遍历对象的属性,也会遍历prototype中属性和方法。

 

分享到:
评论

相关推荐

    js继承的用法

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

    js继承实现示例代码

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

    JS继承笔记.7z

    JavaScript是Web开发中的核心语言,尤其在前端领域,它的作用不可或缺。其中,对象的继承机制是JavaScript..."JS继承笔记.md"文档可能对这些概念进行了详细解释,包括示例和最佳实践,是学习JavaScript继承的好资料。

    js继承.doc

    JavaScript,作为一种基于原型的面向对象语言,其继承机制与传统的类继承有所不同。在JS中,对象可以直接通过原型链实现继承,而无需像Java那样使用`extends`关键字。本文档将探讨JavaScript中的继承实现方式及其优...

    JS继承的实现方式

    ### JS继承的实现方式 JavaScript作为一种灵活且功能强大的编程语言,支持多种继承模式。下面将详细介绍几种常见的继承实现方式,并探讨它们的特点与应用场景。 #### 一、原型链继承 **核心思想**: 将父类的实例...

    javascript继承实例

    本篇文章将深入探讨JavaScript继承的实例,以及如何通过继承来提高代码的可维护性和效率。 首先,我们需要了解JavaScript中的原型(prototype)机制。每个JavaScript对象都有一个内部属性[[Prototype]],通常通过`_...

    JavaScript 继承详解(六)

    在本章中,我们将分析Prototypejs中关于JavaScript继承的实现。 Prototypejs是最早的JavaScript类库,可以说是JavaScript类库的鼻祖。 我在几年前接触的第一个JavaScript类库就是这位,因此Prototypejs有着广泛的...

    JavaScript继承

    除了传统的原型链继承,JavaScript还支持其他继承模式,如组合继承(组合使用构造函数和原型链)、寄生继承(通过创建父类副本改进继承)、原型式继承(使用`Object.create()`)、寄生组合式继承(被认为是最有效的...

    详解Javascript继承的实现

    本文将深入探讨JavaScript继承的实现方式,以及其中的问题和解决方案。 首先,我们来看混合方式的实现,这种方式结合了原型链和对象冒充。在JavaScript中,构造函数是用于创建特定类型对象的函数。例如,`Employee`...

    JavaScript继承机制研究.pdf

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

    js继承的实现

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

    JavaScript继承的特性与实践应用深入详解

    这里我们将深入探讨JavaScript继承的特性以及实践应用。 首先,JavaScript的继承基于原型链。每个对象都有一个`__proto__`属性,指向创建它的构造函数的原型对象。当试图访问对象的一个属性时,JavaScript会沿着...

    javascript继承之为什么要继承.docx

    JavaScript 继承之为什么要继承 JavaScript 中的继承机制是指子类继承父类的属性和方法,使得子类可以拥有父类的所有特征。继承是面向对象编程的基本机制之一,它可以实现代码复用、提高编程效率和增强代码的可维护...

    关于js继承笔记.doc

    这里我们主要探讨三种实现JavaScript继承的方式:原型链继承、构造函数继承和组合继承。 首先,原型链继承是JavaScript最常用的继承方式。在JavaScript中,每个函数都有一个prototype属性,这个属性是一个对象,它...

    史上最为详细的javascript继承(推荐)

    JavaScript 继承是面向对象编程中的关键概念,它允许创建基于现有对象的新对象,从而能够复用和扩展已有功能。本文将深入探讨JavaScript中的几种继承方式,包括它们的基本原理、优缺点以及适用场景。 首先,原型链...

    javascript继承的六大模式小结

    本文将深入探讨JavaScript继承的六大模式:原型链、借用构造函数、组合继承、原型式继承、寄生式继承以及寄生组合式继承。 1. **原型链** 原型链是JavaScript中最基础的继承方式,通过原型对象的引用实现。每个...

    JavaScript继承与多继承实例分析.docx

    1. **JavaScript继承** - **原理**:JavaScript的继承主要是通过原型链(prototype chain)来实现的。每个JavaScript对象都有一个内部属性[[Prototype]],通常可以通过`__proto__`访问,或通过`Object....

    JavaScript继承机制探讨及其应用.pdf

    JavaScript继承机制探讨及其应用 JavaScript是一门弱类型语言,具有函数式编程和面向对象编程的特点。随着近几年JavaScript生态圈的发展和成熟,项目的编码量和复杂度也在呈几何级数增长。JavaScript面向对象编程中...

Global site tag (gtag.js) - Google Analytics