我在使用JavaScript编写课程时遇到了一些麻烦。我看了很多例子,但似乎无法让他们理解我的东西。 alerts()
永远不会出现在下面。
function Player(){
function run(){
alert('run');
self.update();
self.draw();
}
function draw(){
alert('draw');
}
function update(){
alert('update');
}
}
var player1 = new Player();
player1.run();
答案 0 :(得分:3)
使用self.name = function(){}
添加函数function Player(){
var self = this;
self.run = function(){
alert('run');
self.update();
self.draw();
}
self.draw = function(){
alert('draw');
}
self.update = function(){
alert('update');
}
}
var player1 = new Player();
player1.run();
答案 1 :(得分:0)
语法稍微偏离..
function Player(){
this.run = function(){
alert('run');
self.update();
self.draw();
}
....
}
他们都这样做..
答案 2 :(得分:0)
您可以利用以下模式之一来实现这一目标......
<table st-table="displayedCollection" st-safe-src="aggregateData" class="table">
<thead>
<tr>
<th>Deptp</th>
<th>Val_desc</th>
<th>Std_per_lb_rate</th>
<th>TareF</th>
<th>QuantityP</th>
<th>WeightP</th>
<th>CostP</th>
<th>Tare_CostP</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="row in displayedCollection">
<td>{{row.Deptp}}</td>
<td>{{row.Val_desc}}</td>
<td>{{row.Std_per_lb_rate}}</td>
<td>{{row.TareF}}</td>
<td>{{row.Quantityp | number:0}}</td>
<td>{{row.Weightp | number:2}}</td>
<td>{{row.Costp | number:2}}</td>
<td>{{row.Tare_Costp | number:2}}</td>
</tr>
</tbody>
</table>
或
function Player() {
this.run = function() {
/*...*/
}
}
或
function Player() {
function run() {
/*...*/
}
return {
run: run
}
}
有关这些模式的更深入阅读,请查看这篇精彩的文章:3 ways to define a JavaScript class
答案 3 :(得分:0)
正如其他答案所指出的那样,内部函数尚未作为实际类的一部分公开(即它们不是 public 方法)。
按如下方式定义班级的公共方法:
function Player(){
//PUBLIC!
this.run = function(){
//...
}
//NOT PUBLIC
function update(){
//...
}
}
答案 4 :(得分:0)
因为看起来你正在进行游戏开发,所以你会想要采用更多以javascript为中心的OOP范例。如果您正在创建一个类,请在原型上定义实例方法,而不是函数本身。
为什么呢?因为当你的表演调整你的游戏时,每一毫秒或一点内存都会计算(除非你正在制作一个井字游戏或一些微不足道的游戏)。但这是一个好习惯。
function Player(){}
Player.prototype.run = function(){ ... }
Player.prototype.draw = function(){ ... }
Player.prototype.update = function(){ ... }
var player1 = new Player();
player1.run();