I have created the following jsfiddle which highlights my problem. /
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.
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.
Share Improve this question edited Sep 2, 2012 at 19:40 David G 96.8k41 gold badges172 silver badges257 bronze badges asked Sep 2, 2012 at 19:38 DecrypterDecrypter 3,00012 gold badges41 silver badges60 bronze badges 1 |5 Answers
Reset to default 7You 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();
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/
You don't need the this.myArray
. Using myArray
alone will suffice (and work).
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();
alert(myArray);
should work fine I think
[]
to create an array instead ofnew Array();
– David G Commented Sep 2, 2012 at 19:44