Javascript 如何在另一个原型中使用原型函数
我有一个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; } 及 但这也不起作用,并导致相
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