Переменные legs
и iq
имитируют «закрытый» член класса Human
, поскольку они видны только в этом замыкании (только в функции Human).
Если вы хотите получить к ним доступвне этой области необходимо сделать их общедоступными , связав их с ключевым словом this
(this.iq=100;
) или применив getters и setters длякаждый ваш частный участник:
function Human() {
var legs = 2;
this.getLegs = function(){
return legs;
};
}
В любом случае, они представляют собой лишь верхушку айсберга;Я объяснил им, чтобы вы могли понять, почему то, что вы пытались сделать, оказалось неудачным.
Если я правильно понимаю, что вы пытались сделать, правильный способ написать ваш ideea oop в js будет выглядеть примерно так:
function Human(){}
Human.prototype = {
legs : 2,
iq : 100
};
function Woman(){}
Woman.prototype = new Human;
Woman.prototype.getIq = function(){
return this.eq - 10;
};
var womanInstance = new Woman();
// needless to say that this line is both wrong and misogynistic
alert('a woman has an iq of ' + womanInstance.getIq());
Извините, если я увлекся, но есть много статей и блогов о javascript oop (таких как this ), которые я рекомендую вам прочитать до / во время застревания с такого родапроблемы.