繁体   English   中英

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

[英]Inner function cannot access outer functions variable

我创建了以下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的新手,并尝试创建一个对象,字段和方法。 我无法获取我的方法来访问我的字段变量。

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

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/

您混淆了两种类型的变量:局部变量和成员变量。 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();​

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

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

this是每个功能范围的变化。 但是, myArray对内部函数可见。 例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM