【发布时间】:2012-12-18 17:49:55
【问题描述】:
我是新手,所以我会尽量详细。
我正在使用函数创建一个 JS 类。
function Bandstar(p, id)
{
var numberOfSides, Xcenter, Ycenter;
var canvas;
var circlesInt;
var linesInt;
var lines;
var linesInt2;
var linesMidToEdge;
.....
说到方法,我只是这样声明它们:
this.IAset = function(a)
{
for (var i =0; i<= this.numberOfSides-1;i++)
{
if (parseInt(a[i]) == a[i])
this.circles[i].value = a[i];
else
return false;
}
this.IArepaint();
return true
}
差不多就是这样。
现在的问题是,当我创建一个特定的方法时:
this.moveFunc = function(e)
{
var p = e.target;
this.IAmove(p);
};
IAmove 方法声明如下:
this.IAmove = function(p)
{
var m = (p.oTop - this.Ycenter ) / (p.oLeft - this.Xcenter);
var linea = m * ( p.left - p.oLeft) + p.oTop;
var ejeX = p.left;
...
}
编译器只是不断抛出这个错误:
Uncaught TypeError: Object function (e) { var p = e.target; this.IAmove(p); } has no method 'IAmove'
所以,问题是我将moveFunc 声明为一个函数,但是当我尝试使用this 属性时,它实际上并没有使用它上面的类的实例,(Bandstar ),但它本身(显然moveFunc 没有一个名为IAmove 的方法,它正在创建的类是)...
我认为这就像它一样有效,但我一定没有正确理解 JS 中的继承和类形态的概念。
如何从同一个类中的另一个方法访问一个类中的方法?如果我只写IAmove(p),它只会说方法IAmove() 是未定义的(因为它不是,它是Bandstar 命名空间的一部分。
我知道这一定是我没有看到的愚蠢的东西。有什么建议吗?
【问题讨论】:
标签: javascript html oop