在不同的方法中使用变量是“未定义的”?

时间:2012-04-12 17:27:09

标签: javascript variables methods

我有一个用于设置对象的代码:

myObj.prototype.__init = function(a, b, c){
    this.a = a;
    this.b = b;
    this.c = c;
}

然后在另一个函数中,我想在a方法中使用__init我设置:

myObj.prototype.myFunc = function(){
    var data = parse(a);
        //...
}

问题是aundefined。我也尝试了this.a,结果也是undefined。有趣的是,在console.log(myO)var myO = new myObj();之后myO.__init(myA, myB, myC);打印了对象,并初始化了字段a。如何在我的对象的该函数内访问a

由于

编辑:这是对myFunc的调用:

someVar = new tccHandler.myObj();
someVar.__init(myA, myB, myC);
someVar.myFunc();

2 个答案:

答案 0 :(得分:2)

我怀疑它应该是parse(this.a)

请记住this属性在标识符的查找链中默认情况下为[读取:变量];只有词汇变量和“全局对象”的属性(即window)。

a是函数__init中的变量(作为函数参数),其中所指定的对象被分配给属性 this.a,但a 不是函数myFunc的变量。每个函数都引入了它的自己的词法范围。

快乐的编码!

答案 1 :(得分:0)

在普通的javascript中,你会这样做:

myObj = function(a,b,c) {
    this.a = a;
    this.b = b;
    this.c = c;
}

演示:

> var x = new myObj(1,2,3);
> x.a;
1