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

Dec*_*ter 5 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();?
Run Code Online (Sandbox Code Playgroud)

我是JavaScript的新手,并尝试创建一个对象,字段和方法.我无法获取我的方法来访问我的字段变量.

Sak*_*tel 6

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

var ExampleObject = function() {
   var myArray = new Array(1,2,3);
   this.example = function() {
       alert(myArray);
   };
}
var exampleObj = new ExampleObject();
exampleObj.example();?
Run Code Online (Sandbox Code Playgroud)

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


Ray*_*hen 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();?
Run Code Online (Sandbox Code Playgroud)

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

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();?
Run Code Online (Sandbox Code Playgroud)

  • 试试吧.有用.那是因为`this`指的是"dot之前的东西",在这种情况下是`exampleObj`. (2认同)