如何在类内部调用类的方法

How to call method of a class inside of the class

本文关键字:方法 调用 内部      更新时间:2023-09-26

我创建了一个简单的类myClass并添加了get_volume方法。如何在课堂内呼叫get_volume

我总是得到Uncaught ReferenceError: get_volume is not defined

var test = new myClass();
function myClass()
{
    this.volume          = get_volume();
}
myClass.prototype.get_volume = function()
{
    return 100;
};

JSFIDDLE:https://jsfiddle.net/k01stzaq/

执行顺序是导致问题的原因。您在扩展原型之前调用new myClass()

(另请注意,您尝试引用get_volume而不this 。我认为这是一个印刷错误,但也许不是。

按如下方式对代码进行排序:

function myClass(spielname)      //Definition der Klasse "kicker"
{
    this.volume          = this.get_volume();
}
myClass.prototype.get_volume = function()
{
    return 100;
};
var test = new myClass();

构造函数本身是在您的原始版本中提升的,因此new myClass()调用有效,但对test的分配是在原型扩展之前,因此在该点(protoytpe 扩展(之前,构造函数内部没有get_value属性。

作为旁注,JavaScript 中的常见做法是使用以大写字母开头的函数名称来指示函数旨在用作构造函数。它不是由语言强制执行的。

1. 在内部定义函数:

function myClass(spielname)      //Definition der Klasse "kicker"
{
    this.getVolume= function(){
      return this.volume;
    }
    this.volume          = 100;
}

2. 添加方法到原型:

 function myClass(spielname)      //Definition der Klasse "kicker"
    {
        this.volume          = 100;
    }
myClass.prototype.getVolume = function(){
  return this.volume;
}

您将get_volume作为全局函数调用,但它被定义为myClass的方法。
因此get_volume该方法应该在对象的上下文中调用myClass
更改代码,如下所示:

function myClass(spielname)
{
    this.volume = this.get_volume();
}
myClass.prototype.get_volume = function()
{
    return 100;
};
var test = new myClass();

首先声明构造函数和原型,然后初始化测试对象。

function myClass(spielname) 
{
    this.volume = this.get_volume();
}
myClass.prototype.get_volume = function() {
    return 100;
};

var test = new myClass();
console.log(test.volume); //should print 100

希望这能有所帮助!