Как я знаю, в JavaScript нет хорошего решения для частного лица. Решение, описанное here, неэффективно, поскольку частные члены становятся частями объектов, а не прототипов и, следовательно, требуют больше памяти.
Итак, я решил использовать практику Python - отмечать личные вещи с помощью подчеркивания, позволяя другим знать, что свойство или метод makred не предназначены для использования извне.
Но есть хорошо известный инструмент качества кода - JSLint, и он предлагает не использовать ведущие или завершающие символы подчеркивания.
В чем причина этого? Является ли это просто предложение стиля кода или подчеркивание может привести к более серьезным проблемам? Если это справедливое соглашение о стиле кода в сообществе JS, насколько оно сильное?Лидерский знак подчеркивания для частных лиц
ответ
JSLint - хороший инструмент, но он выражает мнение о методах кодирования, которые находятся в стиле его авторов. Read about what those preferences are here. Нет никакого вреда в парсере JavaScript при использовании верхнего подчеркивания/подстроки, инструмент запрограммирован на то, чтобы видеть это как плохое соглашение и предупреждать вас от его использования. Если использовать ваши подчеркивания - это ваши предпочтения, и это имеет смысл, используйте их.
Если вы не хотите видеть предупреждения в JSLint при использовании идентификаторов, начинающихся с подчеркивания/подстроки, в JSLint есть параметр, чтобы скрыть их от вас. Заверните код, который вы не хотите, чтобы оценить, как этот пример, и вы не увидите предупреждение:
/*jslint nomen: true */
var _gaq = {};
/*jslint nomen: false */
Это верно, если у Вас есть код оцененного из файла, но если вы на веб-сайте JSLint есть опция «Tolerate ... dangling _ in identifiers», которая также удаляет предупреждение.
Обратите внимание: выполнение этого может быть связано с тем, что JSHint анализирует файл. Взгляните на эту ссылку, показывающую JSLint vs JSHint относительно этого флага. Но если вы собираетесь следовать стандарту JSLint, JSHint может привести к путанице.
Частные переменные не существуют в JavaScript без использования закрытий, но это не шаблон, необходимый для выполнения каждого проекта. Если вы хотите узнать больше о закрытии в JavaScript, проверьте Ben Nadel's wonderful blog post и NetTuts+
Это просто предложение стиля кода. Вместо этого вы можете использовать JSHint и настроить его, следуя стилю кода в своем проекте/компании. Что касается меня, нет ничего плохого, если вы помечаете частных членов таким образом. Главное правило - следовать единой конвенции во всем проекте. Если это сделает ваш код более читабельным и поддерживаемым, вы можете следовать собственной конвенции для текущего проекта.
Префикс подчеркивания можно использовать в качестве условного обозначения. Но это просто конвенция.
Если частный член является свойством экземпляра объекта, единственным способом является объявление переменной в конструкторе. Свойства объекта никогда не регистрируются в прототипе. Если вы храните свойство в прото, его значение было общим для всех других экземпляров. Он работает как статика в POO.
Прототип используется только для решения неопределенного свойства в экземпляре.
Exemple:
function O(){}
O.prototype.name = "John";
var o = new O;
// o look like that :
// {
// __proto__: { name: "John"}
// }
console.log(o.name); // write "John"
o.name = "Tom";
// now :
// {
// name: "Tom",
// __poto__: { name: "John" }
// }
console.log(o.name); // write "Tom"
Определение имени на экземпляре не переопределить значение прототипа. Он хранится только в экземпляре до значения proto в каскадном разрешении.
Извините за мой плохой английский.
- 1. Друг функции шаблона недоступны для частных лиц
- 2. Знак подчеркивания текста
- 3. Почему знак подчеркивания SQL_Latin1_General_CP1_CI_AS под знаком подчеркивания?
- 4. Порядок использования общественных/частных лиц/функций?
- 5. Как сделать знак подчеркивания для поля равномерно?
- 6. Создайте знак подчеркивания моей функции для практики
- 7. Скрывать частных лиц от Javascript Intellisense
- 8. Класс, доступ к внутренним классам частных лиц?
- 9. Свойства объекта недвижимости для частных лиц в Йене
- 10. Windows Server 2008, IIS7 - хостинг для частных лиц
- 11. Инструкции по присвоению имен для частных лиц Android в порядке?
- 12. Использование затворов или конвенцию подчеркивания для частных членов
- 13. PHP: Префикс подчеркивания для частных методов и свойств?
- 14. Назначьте знак подчеркивания переменной. Что делает подчеркивание?
- 15. fputs (_ ("")), на что указывает знак подчеркивания?
- 16. Созданное имя символа имеет дополнительный знак подчеркивания
- 17. Как использовать знак подчеркивания в wordpress permalink
- 18. Использование подчеркивания, как знак доллара в JavaScript
- 19. Зачем устанавливать знак подчеркивания, равный функции?
- 20. Элемент размещения с идентификатором, имеющим знак подчеркивания
- 21. Исходный код решения в знак подчеркивания!
- 22. Используйте знак подчеркивания для подсчета вхождений и заполнения отсутствующих значений
- 23. regex для функций, содержащих знак подчеркивания в их имени
- 24. GitHub: Можно ли сотрудничать с кем-то из частных лиц?
- 25. Распознавание лиц, Распознавание лиц
- 26. Смешивание лиц двух лиц
- 27. Лидерский торговый портлет и интеграция категорий taglib
- 28. Есть ли объединенные достижения/лидерский план? Намерение
- 29. ember/rails - Странное поведение в маршруте рельсов, содержащее знак подчеркивания
- 30. Магические Doctrine2 искатели, когда поле имеет знак подчеркивания?
Не можете ли вы это проверить? То же самое с ++ и - проверка? Официальное ECMA 3 зарезервировано для подчеркивания и доллара, я думаю, но это уже не так. – HMR