gpt4 book ai didi

Javascript由两个子类继承

转载 作者:太空宇宙 更新时间:2023-11-04 16:15:59 24 4
gpt4 key购买 nike

我有这个代码:

var first = function() {
this.loc = '1';
this.test = function() {
console.log('first ' + this.loc);
}
}

var second = function() {
var me = this;

this.loc = '2';
this.test = function() {
console.log('second ' + this.loc);
Object.getPrototypeOf(me).test.call(me);
}
}

second.prototype = new first();

var third = function() {
var me = this;

this.loc = '3';
this.test = function() {
console.log('third ' + this.loc);
Object.getPrototypeOf(me).test.call(me);
}
}

third.prototype = new second();

var t = new third();
t.test();

它将输出:

third 3
second 3
first 2

如何让它输出:

third 3
second 3
first 3

所以我想用最后一个继承类覆盖第一类 loc 值。

最佳答案

更改 thisArg(signature fun.call(thisArg[, arg1[, arg2[, ...]]])) 为 第二个 code> 从 methis 的对象函数调用:

...
var second = function() {
var me = this;

this.loc = '2';
this.test = function() {
console.log('second ' + this.loc);
Object.getPrototypeOf(me).test.call(this); // <--
}
}
...

进展如何:

第一次,test()函数在third实例上被调用,输出“third 3”

然后,从同一个third上的第二实例(作为第三原型(prototype))调用test函数> 实例通过 Object.getPrototypeOf(me).test.call(me);

test函数执行时this关键字应该指向third实例并传递给进一步的test()调用

关于Javascript由两个子类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41080980/

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