2014-09-04 40 views
0

这是我第一次在JavaScript中使用原型,我可以使用一些帮助。JavaScript:如何使用参数创建原型函数

我有一类就是像

function snakegame(C, C_w, C_h, Ls, spd) 
    { 
      // .... bunch of other stuff ... 

      this.boxCollision = function(A, B) 
      { 
       return A.x == B.x && A.y == B.y; 
      } 

      // ... bunch of other stuff here too ... 

    } 

,我想原型的boxCollision功能,即定义它里面snakegame然后写之外的实施。我试过

function snakegame(C, C_w, C_h, Ls, spd) 
    { 
      // .... bunch of other stuff ... 

      this.boxCollision(A, B); 


      // ... bunch of other stuff here too ... 

    } 

    snakegame.prototype.boxCollision = function(A, B) 
    { 
     return A.x == B.x && A.y == B.y; 
    } 

但是没有奏效。

我也试着编写原型为this.boxCollision(var, var),但那也没用。这样做的正确方法是什么?

+1

那么,你是怎么在第一个案例中调用'boxCollision'的? 'this.boxCollision(A,B);'只有在定义了'A'和'B'时才有效。问题似乎与原型不同,但与您如何调用该方法有关。你传递给它的参数必须存在(就像使用其他函数,原型一样)。 – 2014-09-04 15:01:22

+0

你不需要定义。你可以直接执行。我,e删除线this.boxCollision(A,B);它会按你的意愿工作。 – Sunand 2014-09-04 15:04:57

+0

顺便说一句,我推荐阅读一些关于这个主题的文档,比如MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript – 2014-09-04 15:09:02

回答

-1

你会想要做这样的事情:

var SnakeGame = function() { 
    //Constructor code 
}; 

SnakeGame.prototype = new Object(); //Or what ever object you are going to inherit from 

SnakeGame.prototype.boxCollision = function() { 
    //code 
}; 

SnakeGame.prototype.otherFunction = ... 

然后用它做:

var mySnakeGame = new SnakeGame(); 
mySnakeGame.boxCollision(); 

此外,使用你的对象资本是很重要的,SnakeGame不snakegame。这是惯例,并会帮助你保持直线。

site也有一些更多的信息,如果你想了解更多关于原型在JavaScript中。