首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

调用父类中的父函数,而不是子(同名) javascript

在JavaScript中,如果子类和父类都有同名的函数,但想要调用父类中的函数,而不是子类中的函数,可以通过以下几种方法实现:

  1. 使用super关键字:在子类的函数中使用super关键字,可以调用父类中的同名函数。例如:
代码语言:txt
复制
class Parent {
  sayHello() {
    console.log('Hello from parent');
  }
}

class Child extends Parent {
  sayHello() {
    super.sayHello(); // 调用父类中的同名函数
    console.log('Hello from child');
  }
}

const child = new Child();
child.sayHello();

输出:

代码语言:txt
复制
Hello from parent
Hello from child

推荐的腾讯云相关产品和产品介绍链接地址:暂无推荐。

  1. 使用父类的原型链:通过访问父类的原型链来调用父类中的同名函数。例如:
代码语言:txt
复制
function Parent() {}

Parent.prototype.sayHello = function() {
  console.log('Hello from parent');
}

function Child() {}

Child.prototype = Object.create(Parent.prototype); // 继承父类的原型链
Child.prototype.constructor = Child;

Child.prototype.sayHello = function() {
  Parent.prototype.sayHello.call(this); // 调用父类中的同名函数
  console.log('Hello from child');
}

const child = new Child();
child.sayHello();

输出:

代码语言:txt
复制
Hello from parent
Hello from child

推荐的腾讯云相关产品和产品介绍链接地址:暂无推荐。

  1. 使用call()或apply()方法:通过使用call()或apply()方法,将父类中的同名函数应用到子类实例上。例如:
代码语言:txt
复制
function Parent() {}

Parent.prototype.sayHello = function() {
  console.log('Hello from parent');
}

function Child() {
  Parent.call(this); // 调用父类中的同名函数
}

Child.prototype = Object.create(Parent.prototype); // 继承父类的原型链
Child.prototype.constructor = Child;

Child.prototype.sayHello = function() {
  console.log('Hello from child');
}

const child = new Child();
child.sayHello();

输出:

代码语言:txt
复制
Hello from parent
Hello from child

推荐的腾讯云相关产品和产品介绍链接地址:暂无推荐。

以上是调用父类中的父函数而不是子类中的函数的几种方法。通过使用这些方法,我们可以实现在JavaScript中灵活地调用父类的函数,以满足不同的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

子类调用同名方法和属性

Python面向对象,利用子类调用同名方法和属性。...首先我们定义了两个,Master和School # @author: 北山啦 # FileName: 12子类调用同名方法 # @time: 2022/6/5 14:54 #Master...,子类如何来调用呢 在这里,定义Prentice,继承了Master和School,添加了和同名属性和方法 调用子类属性和方法 如果调用属性和方法,类属性会自动掩盖子类属性,股灾调用属性前...__init__ print(f'运用{self.kongfu}制作煎饼果子') 调用类属性和方法 如果调用方法,但是为了保障调用属性,必须在方法前调用初始化...__init__(self) School.make_cake() 完整代码 # @author: 北山啦 # FileName: 12子类调用同名方法 # @time: 2022

1.8K20
  • vue 组件调用组件函数_vue组件触发组件方法

    1、使用场景 项目里将element-uiel-upload写成公共组件方便调用,官方before-upload方法用于处理上传前要做事,如:比较文件大小,限制文件类型等,通过返回true 或 false...当该组件调用组件方法,并且要能获取到组件方法返回值,如何实现? 2、问题说明 通常组件调用组件方法:this....$emit(方法名, 传参1, 传参2),但是此方法返回值是vue对象,不是组件方法return值。此时要用到高阶函数,传函数作为参数,组件里执行该函数。...} } } 另一种实现方法:通过传Function,组件可获取到组件方法。...export default { props: { // 组件接收函数 beforeUpload: { type: Function

    2.9K20

    vue组件传值给组件_组件调用组件方法

    spm_id_from=trigger_reload 原理: 在组件引用组件时,通过事件绑定机制把一个方法aaaa引用传给组件,这个方法可以有各种参数,组件在触发自己函数或者某些数据发生变化时...,触发:事件绑定机制绑定函数,通过参数方式将要传值传过来,组件处理,也就接到了组件值 最开始组件本身有一个方法 : fatherMethods fatherMethods(){...console.log('组件方法') } 步骤①:在组件被调用标签,绑定一个组件方法引用 组件通过事件绑定机制,也就是 @sendSon="fatherMethods" 方式传值给组件..., 注意,这里是方法引用,换句话就是把这个方法传递给组件,不是方法执行完以后值,所以这里不能加括号 目的:把组件一个方法传给组件 步骤② 给组件写一个引发事件 组件写一个事件会触发一个组件本身方法...$emit('sendSon') } 步骤④ 组件在调用组件时,传参数 真正组件并没有调用这个show方法,只有传给组件调用了,调用就可以传参数,那么就在组件触发时候传参数

    4.2K20

    Vue组件如何调用组件方法

    在Vue开发过程,我们经常需要在一个组件调用另一个组件方法。这篇文章将详细介绍如何在Vue实现组件调用组件方法。我们将以一个简单例子来说明这个问题,并给出相应解决方案。...首先,我们需要创建一个组件和一个组件。组件将提供一个方法,组件将调用这个方法。组件:<!...在这个方法,我们通过this.$refs获取到了组件实例(即childComponent),然后调用组件closeSerialPort方法。这样就完成了组件对子组件方法调用。...需要注意是,在调用组件方法时,需要使用this.$refs来获取组件实例。只有通过这种方式,才能确保我们在组件调用组件正确方法。...深入理解$refs$refs是Vue一个特性,它允许你在Vue实例引用组件或元素DOM节点或组件实例。通过使用$refs,你可以直接操作组件或DOM元素,不需要使用指针或组件实例。

    94500

    Java加载机制---和子类多态调用

    null 1) 上面程序最大难点,也是最重要地方就是:在构造函数调用了虚函数,并且这个函数被子类重载了 2) 继承时候,子类与有着同名属性和同名方法,关于同名属性初始化过程也是必须要了解...同名属性会不会被覆盖掉,同名方法就是多态,同名方法之间调用是怎么样。...)当空间分配好之后,进行属性初始化,把值放在栈空间中,前面的第一步过程物理空间存储地址 指向  这个栈空间,这样就完成了属性值初始化; 3)当属性值完成了初始化时候,就开始调用构造函数了,执行构造函数里面的代码块...这个过程说白了,就是一个加载时候,执行过程,必须等所有的存储空间都分配好,才能够赋值,不是一个属性分配好变量之后立刻就赋值,这个理解是错误。...;同名方法是多态,只会去调用子类重载方法, 这个规则说白了,就是当有和子类时候,必须都所有的存储空间都分配好了,才能执行  属性初始化,继而是构造函数;同时要明白一点,子类构造函数是在构造完成之后才会去执行

    2.7K40

    C# 窗体调用窗体方法(或多窗体之间方法调用)

    ”与“Chilid窗体”之间如何相互调用方法。...C# 窗体调用窗体方法(或多窗体之间方法调用) 看似一个简单功能需求,其实很多初学者处理不好,很多朋友会这么写: C# Code: //窗体是是frmParent,窗体是frmChildA...//在窗体打开窗体 frmChildA child = new frmChildA(); child.MdiParent = this; child.Show(); //窗体调窗体方法...如果窗体与窗体在同一个模块内看似没有错,因为这种反向引用在同一个模块内是可行,但程序不能这么写,你把它写死了!固化了!...假设我们项目不断在扩展,需要将窗体与窗体分开在不同模块,这段代码就完了!因为窗体模块必须引用窗体模块,窗体需要用到frmParent,又要引用窗体模块!

    8.2K20

    创建子类对象时,构造函数调用被子类重写方法为什么调用是子类方法?

    但是:创建B对象调用方法? 答案: 当子类被加载到内存方法区后,会继续加载到内存。...如果,子类重写了方法,子类方法引用会指向子类方法,否则子类方法引用会指向方法引用。 如果子类重载了方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载方法,则方法引用会指向方法。 当子类对象创建时,会先行调用构造方法(构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。...其结果是当编译时候,构造方法调用方法参数已经强制转换为符合方法参数了。 上边代码在编译前已经转换为下面这个样子了。...,是不是恍然大悟?

    6.1K10

    23.C++- 继承多种方式、显示调用构造函数、父子之间同名函数、virtual虚函数  上章链接: 22.C++- 继承与组合,protected访问级别

    C++,继承方式共有3种: public继承 -指成员(变量和函数)访问级别,在子类中保持不变 private继承 -指成员,在子类变为private私有成员....,编译器会默认调用无参构造函数 若有子类对象,也会默认调用子类对象无参构造函数。...StrB(int i):123 也可以通过子类构造函数初始化列表来显示调用 接下来,修改上面子类StrB(string s)函数,通过初始化列表调用StrA(string s)构造函数 改为:...子类可以定义父同名成员和同名函数 子类成员变量和函数将会隐藏同名成员变量和函数 同名成员变量和函数依然存在子类 通过作用域分辨符(::)才可以访问同名成员变量和函数...所以C++引入了虚函数概念,根据指针指向对象类型,来执行不同类同名覆盖成员函数,实现不同形态 定义: 在成员函数返回值前面,通过virtual关键字声明,这样便能访问子类同名成员函数

    3.1K90

    【C++】继承 ⑥ ( 继承构造函数和析构函数 | 类型兼容性原则 | 指针 指向 子类对象 | 使用 子类对象 为 对象 进行初始化 )

    " 私有继承 " 派生 , 是 不具有 基 完整功能 , 因为 最终继承 后派生 , 无法在 外部调用 公有成员 和 保护成员 ; 2、类型兼容性原则应用场景 " 类型兼容性原则...// 对象 可以调用 公有函数 parent.funParent(); // 子类对象 可以调用 子类自身公有函数 child.funChild();...// 子类对象 可以调用 公有函数 child.funParent(); // 将指向子类对象指针传给接收指针函数 // 也是可以 fun_pointer...// 通过指针调用函数 p_parent->funParent(); // 将指向子类对象指针传给接收指针函数 // 也是可以 fun_pointer...类型兼容性原则 : 指针 指向 子类对象 Parent* p_parent2 = NULL; p_parent2 = &child; // 通过指针调用函数

    25620

    深入理解javascript继承机制(2)临时构造函数模式Uber – 从子对象调用对象接口将继承部分封装成函数

    为了解决前文提到将共有的属性放进原型这种模式产生对象覆盖掉对象同名属性问题,就出现了另一种模式,我们称作为临时构造函数模式 临时构造函数模式 我们具体通过代码来分析 function Shape...Uber – 从子对象调用对象接口 传统面向对象编程语言都会有对象访问对象方法,比如java中子对象要调用对象方法,只要直接调用就可以得到结果了。...但在javascript没有这样语法,需要我们实现。...,给每个构造函数天价了一个uber属性,同时使他指向对象原型,然后更改了ShapetoString函数,更新后函数,会先检查this.constructor是否有uber属性,当对象调用toString...时,this.constructor就是构造函数,找到了uber属性之后,就调用uber指向对象toString方法,所以,实际就是,先看对象原型对象是否有同String,有就先调用它。

    1.6K20

    ASP.NET AJAX(6)__Microsoft AJAX Library面向对象类型系统命名空间——构造函数——定义方法——定义属性——注册——抽象——继承——调用

    _mymethod=function{throw Error.notImplemented();}}//包含抽象方法 ——继承 调用构造函数必须调用构造函数,否则会丢失继承效果...可以直接以普通方式实现抽象成员 toString方法无法被继承 ——调用方法 MyNamespace.MyClass.prototype={myMethod:function(param1...= function(name) { MyNamespace.Intern.initializeBase(this, [name]);//调用构造函数 } MyNamespace.Intern.prototype...= function(name) { MyNamespace.Intern.initializeBase(this, [name]);//调用构造函数 } MyNamespace.Intern.prototype...= function(name) { MyNamespace.Intern.initializeBase(this, [name]);//调用构造函数 } MyNamespace.Intern.prototype

    6.2K50

    React----组件生命周期知识点整理

    是否应该更新组件方法来说,如果我们不重写该方法,那么该方法默认返回true,重写该方法,返回false,那么下面的流程就不会走了 父子组件 componentWillReceiveProps方法...,可简写{name},等同于{name:name} 注意: 区分类组件自定义方法,React会在创建完实例后,通过实例调用方法 如果是自定义方法,React不会自己去调用,因此一般使用变量+箭头函数形式...2.React组件包含一系列勾子函数(生命周期回调函数), 会在特定时刻调用。 3.我们在定义组件时,会在特定生命周期回调函数,做特定工作。...---- 父子组件 在A组件render方法调用B组件标签,此时A是组件,B是组件 class A extends React.Component { //初始化状态 state={...scrollHeight: 因为元素比元素高,元素不想被子元素撑一样高就显示出了滚动条,在滚动过程本元素有部分被隐藏了,scrollHeight代表包括当前不可见部分元素高度。

    1.5K40

    关于Java构造函数(Constructor)常见问题总结1 为什么调用子类构造方法时候,默认会调用构造方法2 常见错误:Implicit super constructor is und

    这就是为什么我们上面的那个例子程序会先调用super构造方法。 但要切记,** 虽然调用构造方法,但只创建了一个对象也就是对象。...** 之所以要调用构造方法,是因为super可能需要构造函数来初始化一些私有的成员变量。...上一小节,我们知道,如果子类构造函数,没有显示调用构造函数,那么,编译器就会插入super(),也就是自动调用无参构造函数。但是此时,没有无参构造函数,所以就会报错了。...解决这个问题很简单,我们可以给插入一个无参构造函数,或者在子类构造函数显示调用有参构造函数。 在子类构造函数显示调用构造函数 下面的代码是正确。 ?...Paste_Image.png 构造函数使用规则 简单说,在使用时候,子类构造函数必须调用构造函数,不管有没有显示声明。所以,被调用构造函数,一定在定义好!

    2.8K41

    JavaScript继承实现方式:原型语言对象继承对象原理剖析

    在经典面向对象语言中,您可能倾向于定义对象,然后您可以简单地定义哪些继承哪些(参考C++ inheritance里一些简单例子),JavaScript使用了另一套实现方式,继承对象函数不是通过复制而来...,而是通过原型链继承 回顾《再谈javascriptjs原型与原型链及继承相关问题》 什么是原型语言  只有对象,没有;对象继承对象,不是继承。 ...初始化内部属性 :这一步骤不是必要。通俗点说,就是,对”复制品”不满意,我们可以”再加工”,使之获得不同于”模板””个性”。  所以在JavaScript世界里,万物皆对象这个概念从一终。...组合式继承 调用构造函数,继承属性,通过将实例作为子类原型,实现函数复用 function Woman(name,age){   People.call(this,name,age)...ES6 继承机制完全不同,实质是先创造实例对象this(所以必须先调用super方法),然后再用子类构造函数修改this。

    77320
    领券