5

我创建了以下突出显示我的问题的 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 新手,正在尝试创建对象、字段和方法。我无法让我的方法访问我的字段变量。

4

5 回答 5

7

您混淆了两种类型的变量:局部变量和成员变量。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();​
于 2012-09-02T20:10:19.193 回答
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/

于 2012-09-02T19:41:40.563 回答
1

你不需要this.myArray. 单独使用myArray就足够了(并且有效)。

于 2012-09-02T19:41:22.820 回答
1

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

于 2012-09-02T19:41:37.957 回答
1

this每个功能的范围会发生什么变化。但是,myArray将对内部功能可见。例子:

var ExampleObject = function() {
   var myArray = new Array();
   this.example = function() {
       alert(myArray);
   };
}
var exampleObj = new ExampleObject();
exampleObj.example();​
于 2012-09-02T19:42:31.730 回答