Я использую функцию прототипа, потому что они должны иметь лучшую производительность, когда «класс» создается несколько раз. Кроме того, не все переменные должны быть доступны снаружи, поэтому они определяются внутри «класса» через var
, поэтому они не доступны нигде вне закрытого пространства.JavaScript: частные переменные в функции прототипа
Теперь у меня есть этот простой пример, где я определяю «частную» переменную и определяю множество и получаю для нее функции.
Пример:
function Test() {
var hello = "org";
this._get = function (value) {
hello = value;
}
this._set = function (value) {
return hello;
}
}
var test = new Test();
console.log(test._get());
test._set("new");
console.log(test._get());
Скрипач: http://jsfiddle.net/LdwuS/
Теперь я хочу сделать то же самое с прототипом, но функция ПОЛУЧИТЬ всегда возвращает неопределенное значение!
Пример:
function Test() {
var hello = "org";
}
Test.prototype.set = function (value) {
return hello;
}
Test.prototype.get = function (value) {
hello = value;
}
var test = new Test();
console.log(test.get());
test.set("new");
Скрипач: http://jsfiddle.net/rK22m/
я делаю что-то неправильно, или это не возможно? console.log (test.get());
Невозможно получить доступ к переменным, определенным внутри функции, из функций, определенных вне этой функции. Это включает функции в '.prototype'. –
... и во втором примере вы изменили поведение 'set' и' get'. –
ECMAScript 6, скорее всего, определит «ключ» доступа к свойствам, где вам может потребоваться ключ для доступа к определенным свойствам, предоставляя что-то вроде частных членов на объектах. –