5

I have created the following jsfiddle which highlights my problem. http://jsfiddle.net/UTG7U/

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

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

I am new to JavaScript and trying to create an object, field and a method. I can't get my method to access my field variable.

1
  • It's recommended you use the array literal [] to create an array instead of new Array(); Commented Sep 2, 2012 at 19:44

5 Answers 5

7

You have confused two types of variables: Local variables and member variables. var myArray is a local variable. this.myArray is a member variable.

Solution using only local variables:

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();​

Solution using only member variables:

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();​
Sign up to request clarification or add additional context in comments.

2 Comments

You answered this quite a while ago, but I don't think your second answer would work. In that case, 'this' is referring to the inner function, not the outer.
Try it. It works. That's because this refers to "the thing before the dot" which in this case is exampleObj.
6

you were trying to access a local variable using this operator which is wrong, so here is the working example

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

Link: http://jsfiddle.net/3QN37/

Comments

1

You don't need the this.myArray. Using myArray alone will suffice (and work).

Comments

1

What this is changes with the scope of each function. However, myArray will be visible to inner function. Example:

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

Comments

1

alert(myArray); should work fine I think

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.