内部函数无法访问外部函数变量

时间:2012-09-02 19:38:39

标签: javascript

我创建了以下jsfiddle,突出了我的问题。 http://jsfiddle.net/UTG7U/

var ExampleObject = function() {
   var myArray = new Array();
   this.example = function() {
       alert(this.myArray);
   };
}

var exampleObj = new ExampleObject();
exampleObj.example();​

我是JavaScript新手并尝试创建对象,字段和方法。 我无法通过我的方法访问我的字段变量。

5 个答案:

答案 0 :(得分:6)

您试图使用此运算符访问本地变量,这是错误的,所以这是工作示例

var ExampleObject = function() {
   var myArray = new Array(1,2,3);
   this.example = function() {
       alert(myArray);
   };
}
var exampleObj = new ExampleObject();
exampleObj.example();​

链接:http://jsfiddle.net/3QN37/

答案 1 :(得分:6)

您混淆了两种类型的变量:局部变量和成员变量。 var myArray是一个局部变量。 this.myArray是成员变量。

仅使用局部变量的解决方案:

var ExampleObject = function() {
   var myArray = new Array(); // create a local variable
   this.example = function() {
       alert(myArray); // access it as a local variable
   };
}

var exampleObj = new ExampleObject();
exampleObj.example();​

仅使用成员变量的解决方案:

var ExampleObject = function() {
   this.myArray = new Array(); // create a member variable
   this.example = function() {
       alert(this.myArray); // access it as a member variable
   };
}

var exampleObj = new ExampleObject();
exampleObj.example();​

答案 2 :(得分:1)

您不需要this.myArray。单独使用myArray就足够了(并且可以工作)。

答案 3 :(得分:1)

我认为

alert(myArray);应该可以正常工作

答案 4 :(得分:1)

this的内容随每个函数的范围而变化。但是,myArray将对内部函数可见。例如:

var ExampleObject = function() {
   var myArray = new Array();
   this.example = function() {
       alert(myArray);
   };
}
var exampleObj = new ExampleObject();
exampleObj.example();​