我正在将一些代码更改为更像c#中的类,因此我不必为每次出现创建一个新脚本。我在构造函数上遇到了我的作用域问题,我有这个构造函数
function Game(canvas) {
this.Polygon = function(size, pointCount){
this.size = size;
this.pointCount = pointCount;
this.corners = [];
this.palette = [];
this.render = function (GameObject) {
this.makePolygon(GameObject, this.size, this.corners);
};
};
this.makePolygon = function(GameObject, size, corners){//other code...}
}
我的问题出在this.render中,makePolygon在类中,所以这意味着不同的东西。我尝试过使用.bind(this);但我无法让它发挥作用。
我很肯定以前曾经问过,但我找到的答案都没有对我有用。
答案 0 :(得分:2)
我在不同团队中使用的约定是在javascript函数的顶部添加this
,以避免出现这个问题。
示例:
this.Polygon = function(size, pointCount){
var my = this;
my.size = size;
my.pointCount = pointCount;
my.corners = [];
my.palette = [];
my.render = function (GameObject) {
my.makePolygon(GameObject, my.size, my.corners);
};
};
this.makePolygon = function(GameObject, size, corners){//other code...}
另一个选项,取决于此功能所在的位置,如下所示。
// Somewhere at the top of this code snippet
var my = this;
//...
my.Polygon = function(size, pointCount){
my.size = size;
my.pointCount = pointCount;
my.corners = [];
my.palette = [];
my.render = function (GameObject) {
my.makePolygon(GameObject, my.size, my.corners);
};
};
my.makePolygon = function(GameObject, size, corners){//other code...}