Что означает это подчеркивание в Javascript?


var Gallery = Backbone.Controller.extend({
    _index: null,
    _photos: null,
    _album :null,
    _subalbums:null,
    _subphotos:null,
    _data:null,
    _photosview:null,
    _currentsub:null,
    routes: {
        "": "index",
        "subalbum/:id": "subindex",
        "subalbum/:id/" : "directphoto",
        "subalbum/:id/:num" : "hashphoto"
    },
    initialize: function(options) {
        var ws = this;
        if (this._index === null){
            $.ajax({
                url: 'data/album1.json',
                dataType: 'json',
                data: {},
                success: function(data) {
                    ws._data = data;
                    ws._photos =
                    new PhotoCollection(data);
                    ws._index =
                    new IndexView({model: ws._photos});
                    Backbone.history.loadUrl();
                }
            });
            return this;
        }
        return this;
    },
    //Handle rendering the initial view for the
    //application
    index: function() {
        this._index.render();
    },

Я читаю учебник по позвоночнику.js здесь:http://addyosmani.com/blog/building-spas-jquerys-best-friends/

что это подчеркивает? (_index, _photos, _album) зачем их использовать?

6 75

6 ответов:

Это означает, что частные поля или частные методы. Методы, которые предназначены только для внутреннего использования.

Они не должны вызываться вне класса.

частные поля содержат данные для внутреннего использования.

Они не должны быть прочитаны или записаны в (непосредственно) из-за пределов класса.

очень важно отметить, что простое добавление подчеркивания к переменной не делает ее частной, это только соглашение об именовании.

насколько мне известно, он обычно используется для указания частной переменной (но на самом деле не обеспечивает никакой конфиденциальности, просто соглашение).

Это кратко обсуждается здесь, хотя им не рекомендуется: http://javascript.crockford.com/code.html

при использовании как _varname Это просто часть имени переменных, и не имеет никакого значения javascript. Разработчики используют его для обозначения значения или области действия переменной. В этом случае похоже, что он говорит разработчику, что эта переменная должна быть локальной или частной переменной.

несколько вещей, чтобы отметить, в этом конкретном примере с помощью _.varname будет означать переменную или функцию с подчеркиванием.библиотека js. Также можно было бы использовать _varname для обозначения переменной, содержащей подчеркивание объекта, аналогично в нашем офисе, мы используем $varname для обозначения переменной, содержащей объект jQuery.

Он, вероятно, используется для обозначения внутренних/частных свойств. Точно так же, как в python префикс переменной с подчеркиванием-это простой способ сказать разработчикам, что переменная является внутренней, и им лучше не вмешиваться в нее (и если они это сделают, даже незначительное обновление соответствующей библиотеки может сломать вещи).

обычно _ используется, чтобы сообщить пользователю/программисту, что это частная/защищенная переменная, о которой идет речь.

Как уже упоминалось,это практика среди многих разработчиков, плохая. Если вам приходится прибегать к таким соглашениям в ваших методах программирования, то вы должны изучить язык, методы и шаблоны, прежде чем пытаться использовать язык. Если кто-то не может различать публичные/частные методы в вашем коде без использования "подчеркивания", то ваши навыки документирования крайне отсутствуют. Многие из публичных проектов в интернете очень плохо документированы, что является вероятно, поэтому соглашения " подчеркивания "были" приняты " большинством образованных разработчиков, в то время как другие решили идти с потоком, а не сохранять формальные шаблоны и методы проектирования. Существует причина, по которой" подчеркивание " не было записано в версии ES6/7.

в блоге я недавно наткнулся на менеджера инженера-программиста, который заявил:"соглашение об именовании подчеркивания позволяет легко определить, является ли функция переменной общедоступной или нет. частный.". Мой ответ: "комментарии похожи на фотографии, в этом случае они стоят тысячи подчеркиваний.

существует бесплатный инструмент документации под названием Doxygen. Хотя он специально не поддерживает JavaScript, он может создавать профессиональную документацию для ваших приложений JavaScript, когда вы используете префикс Doxygen в своих комментариях. Очень просто создавать приложения JavaScript с документацией, как для разработчиков, так и для пользователей, когда вы прикладываете немного усилий ваши комментарии к коду.

помните, что существуют инструменты, которые могут удалять комментарии и консольные инструкции для "производственных релизов". При этом использование исходных карт также является пустой тратой времени и ресурсов. Не уменьшайте, пока не будете готовы к публикации.. т. е. dev-сборку (без минификации, оставить комментарии и заявления консоли), сборку (удалить замечания и заявления консоли и сократите сборки. Нет необходимости перекомпилировать сборку Dev, когда ее код качества выпуска, просто подготовьте его к выпуску и разверните).