我有一个用于设置对象的代码:
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);
//...
}
问题是a
是undefined
。我也尝试了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();
答案 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