Javascript 如何在另一个原型中使用原型函数

Javascript 如何在另一个原型中使用原型函数,javascript,Javascript,我有一个javascript类,我想做以下工作 MyClass.prototype.foo = function() { return 0; } MyClass.prototype.bar = function() { return foo() + 1; } 但是当我运行这个程序时,它说没有定义foo() 我试过了 MyClass.prototype.bar = function() { return this.foo() + 1; } 及 但这也不起作用,并导致相

我有一个javascript类,我想做以下工作

MyClass.prototype.foo = function() {
    return 0;
}

MyClass.prototype.bar = function() {
    return foo() + 1;
}
但是当我运行这个程序时,它说没有定义foo()

我试过了

MyClass.prototype.bar = function() {
    return this.foo() + 1;
}

但这也不起作用,并导致相同的错误

最后,我希望在创建类的实例时使用这两种方法。这样做的最佳方式是什么

谢谢

编辑: 我使用new关键字调用了这个方法

var myInstance = new MyClass();

根据下面的注释编辑

创建实例时是否使用了
new
<代码>变量d=新的MyClass();d、 bar()您还希望使用
this.foo()
一个,因为它将运行该实例的方法。
this.foo()
应该可以工作。你是如何“实例化”你的对象的?更多关于原型和构造函数的信息可以在这里找到:正如所说的
返回this.foo()+1应该可以工作。这完全取决于调用MyClass.prototype.bar的方式。
的值取决于函数的调用方式,而不是函数的定义方式。不幸的是,您没有显示如何调用它,因此我们无法真正帮助您。javascript中的方法通常应该像
obj.method()
中那样涉及。这将导致
this
指向方法执行内部的
obj
.prototype
是将成为使用该类型的
new
创建的对象的一部分的方法的保留地。如果您经常尝试在其他原型上调用方法,那么您的代码结构可能是错误的。静态方法(不在对象的特定实例上操作且不使用
的方法)可能不属于
原型
。所有的猜测都表明您并不真正理解这些基本概念。
MyClass.prototype.foo()
this.foo()
做的不一样。第一个没有正确的上下文(
this
),可能是全局上下文
MyClass.prototype.foo.call(this)
是正确的,但这太傻了。谢谢,这是我在寻找的答案。@IanFell:但它是错的。@Rudie:使用
MyClass.prototype.foo()
,这个
将引用
MyClass.prototype
@FelixKling,这甚至比
global
=)更奇怪,但它是错的让我笑了。令人惊叹的
var myInstance = new MyClass();
var MyClass = function(){

}

MyClass.prototype.foo = function() {
    return 0;
}

MyClass.prototype.bar = function() {
    //return MyClass.prototype.foo() + 1;
    return this.foo() +1;
}

myClass = new MyClass()

myClass.foo() //0
myClass.bar() //1