Self-pushing object constructor
javascript, oop
Solution
You could try passing the `AddressBook` array reference to the function like such:
var Entry = function(name, numbers, address, addressBook) {
this.name = name;
if(!(numbers instanceof Array)) {
this.numbers = [numbers];
}
else this.numbers = numbers;
this.address = address;
addressBook.push(this);
};
var addressBook = [];
function addContact(name, numbers, address) {
new Entry(name, numbers, address, addressBook)
}
Problem
So JavaScript is a functional language, classes are defined from functions and the function scope corresponds to the class constructor. I get it all now, after a rather long time studying how to OOP in JavaScript. What I want to do is not necessarily possible, so I first want to know if this is a good idea or not. So let's say I have an array and a class like the following: ``` var Entry = function(name, numbers, address) { this.name = name; if(typeof numbers == "string") { this.numbers = []; this.numbers.push(numbers); } else this.numbers = numbers; this.address = address; }; var AddressBook = []; ``` And I add contacts with the following function: ``` function addContact(name, numbers, address) { AddressBook.push(new Entry(name, numbers, address)); } ``` Can't I make it so `new Entry()` would put itself into `AddressBook`? If I can't do this on create, it would be interesting to do it with a method in the `Entry` prototype as well. I couldn't figure out a way to do anything similar.