I'm just studying javascript and I faced an issue related to scoping.
Here's the code
function User (properties) {
    for (var i in properties) {
        (function ()  {
            this ['get' + i] = function () {
                return properties [i];
            };
        }) ();
    }
}
var me = new User ({
    Id : 54,
    Name : 'ohyou'
});
console.log (me.getName ());
console.log (me.getId ());
How I want it to work: it should create two functions getName and getId that belong to the me object. 
How it works: it creates two functions just as I want, but they belong to the window
What I tried:
- I tried removing the function on the line 3. It does what I want, but now it returns the - name"ohyou" two times, instead of returning the- idand the- name
- I tried using the functions from the - windowscope, the problem as in the previous case persists - it returns the- nametwice.
The question: what am I doing wrong and how do I make it work as I want?
P.S. Making this post using phone, sorry for possible typos or formatting issues. Also, please forgive me my english skills.
 
     
     
     
    