gpt4 book ai didi

javascript - 覆盖继承的原型(prototype)方法并在新方法中调用原始方法

转载 作者:数据小太阳 更新时间:2023-10-29 05:23:11 26 4
gpt4 key购买 nike

在下面的代码中,如何访问B.prototype.log中的A.prototype.log

function A() {}

A.prototype.log = function () {
console.log("A");
};

function B() {}

B.prototype = Object.create(A.prototype);
B.prototype.constructor = B;

B.prototype.log = function () {
//call A.prototype.log here
console.log("B");
};

var b = new B();
b.log();

我知道我可以只写 A.prototype.log.call(this) 但我想也许有更优雅的方式,让我以相对的方式调用它,比如“调用原型(prototype)链中下一个更高实例的方法'log'”。这样的事情可能吗?

最佳答案

你可以使用 Object.getPrototypeOf

...
B.prototype.log = function () {
Object.getPrototypeOf (B.prototype).log.call(this)
console.log("B");
};
...
b.log(); //A B

注意:Object.getPrototypeOf 是 ECMASript 5,请参阅 compatibility


还有非标准和弃用的__proto__属性 ( compatibility )

references the same object as its internal [[Prototype]]

并且允许您像这样调用您的A的日志方法

B.prototype.__proto__.log.call(this)

但是

the preferred method is to use Object.getPrototypeOf.

关于javascript - 覆盖继承的原型(prototype)方法并在新方法中调用原始方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17858639/

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