我创建了一个简单的类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/
答案 0 :(得分:4)
执行顺序是造成问题的原因。 在原型扩展之前,您正在调用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
的赋值是在原型扩展之前,所以在构造函数中没有get_value
{1}}属性直到之后那个点(protoytpe扩展名)。
作为旁注,JavaScript中的常见做法是使用以大写字母开头的函数名来表示函数旨在用作构造函数。它没有被语言强制执行。
答案 1 :(得分:1)
首先声明构造函数和原型,而不是初始化测试对象。</ p>
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
希望这有帮助!
答案 2 :(得分:1)
<强> 1。定义函数internaly:
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;
}
答案 3 :(得分:1)
您将get_volume
称为全局函数,但它被定义为myClass
的方法。
因此get_volume
方法应在{{1}的上下文中调用对象。
更改您的代码,如下所示:
myClass