无法从Javascript中的另一个方法内部调用方法
检查下面的代码,我在这里迷路了,为什么会出现这个错误。有什么建议吗。 在这里,我做了一个类测试,并添加了两个方法check和nextfn。我打电话到下一站查收无法从Javascript中的另一个方法内部调用方法,javascript,class,oop,methods,prototype,Javascript,Class,Oop,Methods,Prototype,检查下面的代码,我在这里迷路了,为什么会出现这个错误。有什么建议吗。 在这里,我做了一个类测试,并添加了两个方法check和nextfn。我打电话到下一站查收 var test=function(){} test.prototype.check=function() { console.log("hello from checking"); } test.prototype.nextFn=function(){ check(); console.log("Hello from
var test=function(){}
test.prototype.check=function()
{
console.log("hello from checking");
}
test.prototype.nextFn=function(){
check();
console.log("Hello from nextfn");
}
下一个
错误是
Uncaught ReferenceError: check is not defined(…)
现在考虑另一种情况;
test.prototype.anotherFn=function()
{
var p=new Promise(function(){
this.check();
})
}
现在也得到了同样的错误
Uncaught ReferenceError: check is not defined(…)
打电话的时候
var t=new test();
t.anotherFn();
check
功能位于test
对象的顶部
当您像这样调用nextFn
时:
t.nextfn();
接下来的范围将绑定到“type”test
的t
实例。在nextfn
中访问test
的原型将通过此
因此,请使用此访问检查:
this.check();
这些东西会令人惊讶地困惑。一个好的参考是
====
对于您的第二个场景,问题是您试图从具有自己作用域的函数中调用this
JavaScript中的作用域通常不是块作用域,而是函数作用域。还有很多内容,我建议阅读闭包教程以获得更全面的描述,但现在,请尝试以下内容:
test.prototype.anotherFn=function()
{
var self = this; // save reference to current scope
var p=new Promise(function(){
self.check(); // use self rather than this
})
}
this.check()
另外,newtest()
代替了newtext()
扩展@Igor comment,将check
方法放在测试原型上nextFn
是同一个原型的一部分,这个
是指父级/原型的关键字。工作正常,现在在我的问题中添加了另一个场景;请你也澄清一下这个问题好吗。据我所知,这将是p的范围。但是如何调用函数检查呢?@KOUSIKMANDAL我更新了问题第二部分的答案
test.prototype.anotherFn=function()
{
var self = this; // save reference to current scope
var p=new Promise(function(){
self.check(); // use self rather than this
})
}