gpt4 book ai didi

javascript - 如何从 JavaScript 中的子类调用父类的方法,以便可以访问父类的局部变量?

转载 作者:行者123 更新时间:2023-11-29 16:14:50 26 4
gpt4 key购买 nike

我正在使用 JavaScript 中的一种类继承方法(如我正在修改的代码中所用),但不了解如何将子类中方法的附加功能附加到相应父类的功能方法已经有了;换句话说,我想用一个方法覆盖子类中的父方法,除了它自己的子类特定的东西之外,父方法也做同样的事情。所以,我试图从子方法中调用父方法,但这可能吗?

代码在这里:http://jsfiddle.net/7zMnW/ .请打开开发控制台以查看输出。

代码也在这里:

function MakeAsSubclass (parent, child)
{
child.prototype = new parent; // No constructor arguments possible at this point.
child.prototype.baseClass = parent.prototype.constructor;
child.prototype.constructor = child;

child.prototype.parent = child.prototype; // For the 2nd way of calling MethodB.
}

function Parent (inVar)
{
var parentVar = inVar;

this.MethodA = function () {console.log("Parent's MethodA sees parent's local variable:", parentVar);};
this.MethodB = function () {console.log("Parent's MethodB doesn't see parent's local variable:", parentVar);};
}

function Child (inVar)
{
Child.prototype.baseClass.apply(this, arguments);

this.MethodB = function ()
{
console.log("Child's method start");
Child.prototype.MethodB.apply(this, arguments); // 1st way
this.parent.MethodB.apply(this, arguments); // 2 2nd way
console.log("Child's method end");
};
}

MakeAsSubclass(Parent, Child);

var child = new Child(7);
child.MethodA();
child.MethodB();

最佳答案

不,您看不到 parent 的局部变量。您继承了 parent 的原型(prototype)链,而不是他们的本地状态。在您的情况下,您将父函数应用于不保持状态的子对象。

apply(this,...)

表示您将函数绑定(bind)到 this 的当前值。当您从子对象调用方法 b 时,它会绑定(bind)到子对象,因此不会在包含父值的闭包内运行。

关于javascript - 如何从 JavaScript 中的子类调用父类的方法,以便可以访问父类的局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18320934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com