Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.07.2017, 15:37
Аспирант
Отправить личное сообщение для Luca Посмотреть профиль Найти все сообщения от Luca
 
Регистрация: 20.06.2017
Сообщений: 69

Знак $ в имени свойства объекта
Здравствуйте
Читаю Флэнагана (в том числе) и у него следующий пример

var serialnum = {
$n: 0, // Знак $ в имени свойства говорит о том, что оно является частным
get next(){return this.$n++}
}


ничего особого не заметил в поведении свойства.
log(serialnum.$n);

работает
что он имел в виду?
Ответить с цитированием
  #2 (permalink)  
Старый 04.07.2017, 15:44
Кандидат Javascript-наук
Отправить личное сообщение для Diphenyl Oxalate Посмотреть профиль Найти все сообщения от Diphenyl Oxalate
 
Регистрация: 21.01.2017
Сообщений: 139

Это просто рекомендация, поведение от этого не меняется
Ответить с цитированием
  #3 (permalink)  
Старый 04.07.2017, 15:47
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

обычно для приватного свойства используется не "$", а "_".
$nnn - в основном для объектов, которые суть коллекции jQuery
Ответить с цитированием
  #4 (permalink)  
Старый 04.07.2017, 15:47
Аспирант
Отправить личное сообщение для Luca Посмотреть профиль Найти все сообщения от Luca
 
Регистрация: 20.06.2017
Сообщений: 69

Diphenyl Oxalate,
те приватным свойство сделать нельзя?
Ответить с цитированием
  #5 (permalink)  
Старый 04.07.2017, 15:49
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Luca,
для истинно приватных свойств в ES7 вроде что-то появилось, а в традиционном js никак
Ответить с цитированием
  #6 (permalink)  
Старый 04.07.2017, 15:49
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от Alexandroppolus Посмотреть сообщение
обычно для приватного свойства используется не "$", а "_".
$nnn - в основном для объектов, которые суть коллекции jQuery
У меня тоже с JQ ассоциация, не люблю чужой код читать с такими $ именами.
Ответить с цитированием
  #7 (permalink)  
Старый 04.07.2017, 15:54
Аспирант
Отправить личное сообщение для Luca Посмотреть профиль Найти все сообщения от Luca
 
Регистрация: 20.06.2017
Сообщений: 69

j0hnik,
у меня скорее с PHP
Alexandroppolus,
я так и понял, но уточнил
Ответить с цитированием
  #8 (permalink)  
Старый 07.07.2017, 03:06
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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 ...

Последний раз редактировалось ruslan_mart, 07.07.2017 в 03:20.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При вызове локальной функции объекта не могу использовать свойства объекта Gudsaf Общие вопросы Javascript 7 17.09.2016 20:23
Название свойства объекта из цифр zhurchik Общие вопросы Javascript 15 16.03.2015 12:11
Как обратиться к свойству объекта по имени если оно хранится в переменной xaknik Общие вопросы Javascript 2 25.04.2012 23:12
IE 8 Не удалось получить значение свойства "match": значением объекта является null abstract Internet Explorer 2 26.08.2011 15:27
Как при чтении или записи свойства объекта вызывать функцию danik.js Общие вопросы Javascript 3 16.09.2010 17:57