Мне нужен конструктор, который инициализирует Objects
с уникальным name
. Я пишу код, как это:Статическое личное поле Javascript
Obj.prototype.idCounter = 0;
Obj = function() {
this.name = "Obj_" + Obj.prototype.idCounter;
Obj.prototype.idCounter++;
}
var o1 = new Obj();
var o2 = new Obj();
alert(o1.name); // Obj_0
alert(o2.name); // Obj_1
Но Obj.prototype.idCounter
не является частным. Я знаю, как создать приватную переменную, но я понятия не имею, как создать приватную статическую переменную.
Ну, дело в том, что javascript не может быть сопоставлен с классическим объектно-ориентированным языком, он прототип ориентирован. Короткий ответ: извините, но вы не можете. – axelduch
Введение функции Symbol позволит создать более надежный код против угрозы * случайных * конфликтов свойств, но по-прежнему невозможно по-настоящему скрыть свойства объекта благодаря 'Object.getOwnPropertyNames()' и ' Object.getOwnPropertySymbols() '. Для некоторых целей вы можете использовать закрытие. – Pointy
Привет, просто пытаюсь узнать здесь. Является закрытием, как вы создадите приватную переменную, и мы говорим, что сделать эту приватную переменную static невозможно в js? – Observer