簡體   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