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

javascript中使用call方法实现另类的继承

阅读更多

所有的Function类的对象都具有这个叫call()的方法,它接受一个this操作符的宿主环境对象,还接受一个参数列表,注意不是参数数组。

这篇文章使用call()方法的第一个参数的特点来实现继承。

 

// 基类
function Person(name, sex)
{
	this.name = name;
	this.sex = sex;
	
	this.get_nama = function(){
		return this.name;
	};
	
	this.get_sex = function(){
		return this.sex;
	};
}

var man1 = new Person('路人甲', '男');
document.write(man1.get_nama() + ',性别:' + man1.get_sex() + '<br>');


// 子类
function PHPer(name, sex, title)
{
	// 改变Person对象中this的宿主环境
	Person.call(this, name, sex);
	
	this.title = title;
	this.get_title = function(){
		return this.title; 
	};
}

var man2 = new PHPer('胡子哥', '女', 'php研发工程师');
document.write(man2.get_nama() + ',性别:' + man2.get_sex() + ',职称:' + man2.get_title());
分享到:
评论

相关推荐

    Javascript类的继承,使用this.callParent调用超类方法

    在本话题中,我们将深入探讨JavaScript中的类继承,并特别关注`this.callParent`这个方法,它是如何被用来调用超类方法的。 首先,让我们了解JavaScript中的构造函数。构造函数是一种特殊的函数,用于创建和初始化...

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

    构造函数继承主要通过`call()`或`apply()`方法实现,将父类构造函数的上下文(`this`关键字)指向子类实例。这样,父类构造函数可以初始化子类实例的属性。然而,这种方式并不传递方法,只共享了实例属性,没有真正...

    javascript中如何实现封装,继承和多态

    javascript中如何实现封装,继承和多态

    JavaScript实现继承的几种方式

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

    浅谈javascript中的call、apply、bind.doc

    JavaScript中的call、apply、bind方法都是改变函数执行上下文的内置方法。这些方法的核心功能是改变函数运行时的this指向,即决定函数执行时应当将哪个对象视为其主体。理解这些方法的机制对于理解JavaScript中的...

    javascript实现继承的4种方法总结.doc

    构造继承指的是使用父类构造函数在子类构造函数内部调用,这可以通过使用 `call` 或 `apply` 方法实现。这种方式允许子类在实例化时调用父类构造函数,继承父类的属性和方法。它解决了原型链继承中不能传参的问题,...

    javasript中call方法详解.doc

    比如,可以在子类的构造函数中使用 call 方法调用父类的构造函数,从而实现父类方法和属性的继承。 4. 利用 call 方法,开发者可以让一个对象去调用另一个对象的方法,这在编写 JavaScript 库或者框架时非常有用。 ...

    JS:Call方法详解(js_的继承)

    虽然JavaScript不直接支持多重继承,但我们可以通过连续使用`call`方法来实现类似的效果。 **示例:** ```javascript function Class10() { this.showSub = function(a, b) { console.log(a - b); }; } ...

    JavaScript继承

    在Java或C++等语言中,继承通常只需要一个关键字,如`extends`,但在JavaScript中,实现继承需要采用一系列技术。 JavaScript使用的是原型式继承,这是它与其他语言的一大区别。原型(Prototype)是JavaScript实现...

    javascript的几种继承方法介绍.doc

    其方法是通过在子构造函数中调用父构造函数来实现继承,常使用call()方法来调用父构造函数,以此来改变子构造函数中this的指向。这种方法可以向父对象传递参数,但因为没有使用原型,所以无法共享属性,存在复用性差...

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

    浅析JavaScript实现基于原型对象的“继承” 本文旨在对JavaScript实现基于原型对象的“继承”进行深入分析,并与基于类的继承进行比较。通过对JavaScript的原型继承机制的介绍和实例分析,提出一个改进的“寄生组合...

    浅谈Javascript实现继承的方法

    它使用原型链实现方法的继承,同时又利用构造函数来继承父对象的属性。组合继承避免了子对象共享父对象引用类型属性的问题,同时也继承了父对象原型链上的方法。其主要缺点是调用了两次父构造函数,一次是在创建子...

    JavaScript继承机制研究.pdf

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

    JavaScript中的call方法和apply方法使用对比

    2. 多重继承:通过使用多次call,可以在子类中继承多个父类的属性和方法,例如`Class2`的构造函数中使用了两个call调用,实现了多重继承。 3. 函数借用:一个对象可以借用另一个对象的方法。如第一个示例中,`add`...

    JsCall方法详解(js的继承).pdf

    总的来说,`call`和`apply`是JavaScript中实现动态上下文和继承的重要工具,它们提供了灵活的方式来操作函数调用,尤其是在处理对象和类的结构时。尽管JavaScript有多种实现继承的方式,如原型链、类式继承等,但`...

    JavaScript中this关键字使用方法详解

    在JavaScript编程语言中,`this`关键字是一个至关重要的概念,它常常引发初学者的困惑,因为它的值在不同的上下文中可能会有所不同。`this`关键字主要用来引用对象的上下文,或者说是当前执行环境中的对象。在本文中...

    javascript 继承派生

    本资料集合关注的是JavaScript中的继承派生以及与之相关的`apply`和`call`方法。 **继承**是面向对象编程的关键概念,允许一个对象(子类)继承另一个对象(父类)的属性和方法。在JavaScript中,由于它没有内置的...

    javascript控件开发之继承关系

    在这个主题中,“javascript控件开发之继承关系”主要探讨的是如何利用JavaScript的面向对象特性来构建和组织控件的层次结构,以及如何通过继承来实现代码的复用和模块化。 在JavaScript中,继承是基于原型...

    Javascript中的封装与继承

    JavaScript使用原型链来实现继承,每个对象都有一个`__proto__`属性,指向其构造函数的原型对象。原型对象又可以通过`__proto__`链接到另一个对象,形成一个链式结构。 ```javascript function Animal(name) { ...

    【JavaScript源代码】JavaScript中的几种继承方法示例.docx

    **原理**: 在JavaScript中,原型链继承是一种实现继承的方式,它通过让子类的原型对象指向父类的一个实例来实现属性和方法的共享。 - **核心概念**: 每个函数都具有一个`prototype`属性,该属性默认是一个空的对象...

Global site tag (gtag.js) - Google Analytics