如何在类内部调用类的方法
How to call method of a class inside of the class
我创建了一个简单的类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
希望这能有所帮助!
相关文章:
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- javascript从子方法调用父方法
- 我应该返回一个类似console.log()的方法调用吗
- NodeJS-从同一文件中的另一个方法调用一个方法
- 使用restangular save方法调用put与post时的控件
- 从实例方法调用实例方法
- Node.js-异步方法调用问题
- Jquery事件绑定获胜'当作为方法调用时不起作用,但当直接在控制台中调用时会起作用
- 向模板实例变量传递调用方法调用的结果时出现异常
- jQuery 方法调用了两次
- 不能从 Backbone.View 的方法调用 Backbone.collection 的方法,其中包含 require
- 组合 onLayout 的方法调用
- lodash/下划线 - 使用绑定与方法调用和方法保持未绑定
- 从公共方法调用模块的私有函数
- 如何对 jqGrid 的 loadComplete 和 onSelectRow 进行基因预和后方法调用
- 完全限定的 JavaScript 方法调用
- 为什么我在 Angular JS 中收到两个方法调用
- 如何在从排序方法调用参数时将其传递给回调
- 使用两种不同的方法调用方法
- 如何在 javascript 中更改方法调用的全局范围