gpt4 book ai didi

javascript - 在多级继承中寻找构造函数

转载 作者:行者123 更新时间:2023-11-29 18:06:53 25 4
gpt4 key购买 nike

我想找出用于在 javascript 中实例化对象的特定构造函数,而不是原型(prototype)链中的最后一个构造函数。考虑代码:

function F(){};
function E(){};
function D(){};
function C(){};
function B(){};
function A(){};

E.prototype= new F();
D.prototype= new E();
C.prototype= new D();
B.prototype= new C();
A.prototype= new B();

a=new A();

查找 fiddle here

a.constructor 返回 function F(){},但我想要一个返回 function A(){} 的方法,因为A 是用于实例化对象的构造函数。

如何实现?

最佳答案

通过从父类继承的方式,无法访问原始构造函数,因为当您编写

A.prototype = new B();

A.prototype.constructor 确实指向 B 而不是 A

使用这种原型(prototype)继承模式,您必须手动正确设置构造函数。因此,您可以手动为每个扩展类执行此操作,也可以使用辅助函数:

function inherit(C, P) {
C.prototype = new P();
C.prototype.constructor = C;
}

function F(){};
function E(){};
function D(){};
function C(){};
function B(){};
function A(){};

inherit(E, F);
inherit(D, E);
inherit(C, D);
inherit(B, C);
inherit(A, B);

var a = new A();
var c = new C()

document.write( a.constructor + "<br>" );
document.write( c.constructor );

关于javascript - 在多级继承中寻找构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30551517/

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