Знак $ в имени свойства объекта
Здравствуйте
Читаю Флэнагана (в том числе) и у него следующий пример 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:22. |