Доброго времени суток! Подскажите, никак не могу найти решение касательно js. Давайте сразу к простому примеру:
var human = (function () {
var prototype = {}
prototype.getName
prototype.getName = function (str) {
if (str) this.name = str
return this.name
}
function constructor(data) {
this.name
}
constructor.prototype = prototype
return constructor
}())
var h1 = new human
h1.getName('Vasia')
var h2 = new human
h2.getName('Petia')
Условие тут таково, что должны быть прототипные функции, которые будут обращаться в приватным переменным экземпляра конструктора.
В данном случае this.name — это публичное свойство, но что если я не хочу чтобы можно было напрямую менять name в духе:
var h1 = new human
h1.getName('Vasia')
h1.name = 'Petia'
Как мне это преградить? Иными словами: как работать с приватными переменными из функции в прототипе? Вроде как банальная потребность.
Единственное что пришло в голову: это хранить массив id экземпляров с объектами данных выше уровнем, чем конструктор, а в this.id хранить уже сам идентификатор конкретного экземпляра. Но, согласитесь, это маразм, да и к тому же поменять id многого ли стоит?