gpt4 book ai didi

分配给对象的Javascript函数无法访问继承的方法

转载 作者:行者123 更新时间:2023-12-03 10:12:02 25 4
gpt4 key购买 nike

毫无疑问,我在这里做了一些愚蠢的事情,但是下面的代码会导致

error "this.getString is not a function." 

出现这种情况是因为当 unlatedInstance 调用 stringGetter 时,showCombinedStrings() 中的“this”的值为不相关......这实际上看起来很公平,但是如何设置才能使其正常工作?

function BaseStringGetter() {
this.getString = function () {
return 'this is from BaseStringGetter';
}
}

function DerivedStringGetter() {
this.showCombinedStrings = function () {
console.log( 'this is from DerivedStringGetter and... ' + this.getString() );
}
}
DerivedStringGetter.prototype = new BaseStringGetter();
var stringGetterInstance = new DerivedStringGetter();

function Unrelated() {};
var unrelatedInstance = new Unrelated();
unrelatedInstance.stringGetter = stringGetterInstance.showCombinedStrings;
unrelatedInstance.stringGetter();

最佳答案

一个选项是这样的:

unrelatedInstance.stringGetter =
stringGetterInstance.showCombinedStrings.bind(stringGetterInstance);
unrelatedInstance.stringGetter();

在这里,您正在使用Function.prototype.bind()使 unlatedInstance.stringGetter() 内部的 this 始终引用 stringGetterInstance

关于分配给对象的Javascript函数无法访问继承的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30066872/

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