Связь статических объектов с приватными переменными
empty
|
Если честно я не совсем понимаю что вам надо, но может быть так:
function A(input)
{
var _name;
this.getName = function()
{
return _name;
};
this.setName = function(input)
{
_name = input;
};
};
window.onload=function(){
exemplareObject = new A();
exemplareObject.setName('test');
var testVaribele = exemplareObject.getName('test');
alert("testVaribele : " + testVaribele);
alert("_name : " + _name);
}
Я понял... речь о статических методах. Я правильно понимаю: вы пытаетесь создать что-то типо статического getter и setter? |
В джаваскрипте нет приватных свойств. Используй символ подчеркивания для условности.
|
Цитата:
|
Цитата:
|
Во втором случае метод toString вызывается сразу, до его затирания (которое происходит при создании нового экземпляра)
|
okouser,
:write:
function A(name)
{
var _name = 'test';
A.prototype.getName = function()
{
return _name + this._name;
};
A.prototype.setName = function(value)
{
this._name = value;
};
A.prototype.toString = function()
{
return this.getName();
};
this.setName(name);
};
A.A1 = new A("1");
A.A2 = new A("2");
A.A3 = new A("3");
alert(A.A1); // test1
alert(A.A2); // test2
alert(A.A3); // test3
A.A2.setName(12345)
alert(A.A2); // test12345
alert(A.A3); // test3
|
Это не архитектура а говнокод. С говнокодом помочь не могу..
|
Я просто сейчас как раз читаю раздел ООП в JS: мне это тоже интересно.
Вы пишите про статические экземпляры класса, но мне это не о чём не говорит. Я знаю суть статического свойства класса и статического метода класса, но в чём суть статического экземпляра класса?
A.prototype.setName = function(value){
_name = value;
};
Вот эту строчку я перевожу как: присвоить всем инстанциям этого объекта метод setName. Зачем его указыввать внутри объекта? Я так понял из теории, что внутри объекта вы просто объявляете метод.. А вот если после объявления объекта вам надо присвоить новый метод и метод должен принадлежать всем инстанциям этого объекта, то нужно образаться к свойству (или методу?) prototype |
Цитата:
|
Цитата:
|
Приведи тогда код на Java или C# того, что ты хочешь сделать в js.
|
А причем тут Enum?
Чем не нравится такой вариант?
function A(name) {
this.name = name;
}
A.prototype.toString = function() {
return this.name;
};
A.A1 = new A("1");
A.A2 = new A("2");
A.A3 = new A("2");
Более строгий, ES5 (IE8- отпадает) вариант:
function A(name) {
this._name = name;
}
A.prototype = {
get name() { return this._name },
set name(value) { this._name = value },
toString: function() { return this.name }
};
Object.defineProperty(A.prototype, 'constructor', {value: A});
A.A1 = new A("1");
A.A2 = new A("2");
A.A3 = new A("2");
|
Цитата:
|
| Часовой пояс GMT +3, время: 04:18. |