Знак $ в имени свойства объекта
Здравствуйте
Читаю Флэнагана (в том числе) и у него следующий пример
var serialnum = {
$n: 0, // Знак $ в имени свойства говорит о том, что оно является частным
get next(){return this.$n++}
}
ничего особого не заметил в поведении свойства. log(serialnum.$n); работает что он имел в виду? |
Это просто рекомендация, поведение от этого не меняется
|
обычно для приватного свойства используется не "$", а "_".
$nnn - в основном для объектов, которые суть коллекции jQuery |
Diphenyl Oxalate,
те приватным свойство сделать нельзя? |
Luca,
для истинно приватных свойств в ES7 вроде что-то появилось, а в традиционном js никак |
Цитата:
|
j0hnik,
у меня скорее с PHP Alexandroppolus, я так и понял, но уточнил |
Luca, через замыкания можно организовать.
var MyModule = (function() {
var Private = {
bar: function() {
alert(this.fooBar);
}
};
function MyModule() {
this.fooBar = 'foo bar';
}
MyModule.prototype = {
foo: function() {
Private.bar.call(this);
}
};
return MyModule;
})();
var m = new MyModule;
m.foo();
console.log(m.bar); //undefined
Или как-то так:
var MyModule = function() {
'use strict';
var Private = {
foo: function() {
console.log(this.a);
},
bar: function() {
console.log(this.b);
}
};
var _ = {};
function MyModule(a, b, c) {
this.a = a;
this.b = b;
this.c = c;
this[_.foo]();
this[_.bar]();
this.baz();
}
MyModule.prototype = {
baz: function() {
console.log(this.c);
}
};
for(var i in Private) {
if(Private.hasOwnProperty(i)) {
MyModule.prototype[_[i] = Symbol()] = Private[i];
}
}
return MyModule;
}();
var m = new MyModule(1, 2, 3);
//1, 2, 3
console.log(m.foo); //undefined
console.log(m.bar); //undefined
console.log(m.baz); //function ...
|
| Часовой пояс GMT +3, время: 03:28. |