виджет jQuery UI в чат


Я создаю пользовательский интерфейс чата с jQueryUI:

$.widget("ui.chatwindow", {
    options: {
        nickname: "obama";
    },
    setNickname: function(nick){
        var self = this;
        var id_pre = 'wchat_' + self.options.nickname;
        $('#' + id_pre + '\\:name').text(self.options.nickname);
    },
    setStatus: function(status){
            var self = this;
            var id_pre = 'wchat_' + self.options.nickname;
            switch(status){
                case 1:
                    $('#' + id_pre + '\\:status').removeAttr('class');
                    $('#' + id_pre + '\\:status').addClass('chat-icon-online');
                    $('#' + id_pre + '\\:status').attr('title','Online');
                    break;
                    ...
                default:
                    break;                    
            }
            ...
        },
    ...
}

Я всегда пишу это в каждом способ изменить элемент класса или текстовое содержание:

var self = this;
var id_pre = 'wchat_' + self.options.nickname;

Это хороший и эффективный способ, чтобы код?



Комментарии
2 ответа

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

Поэтому добавил некоторую дополнительную работу для себя (и поднятия пара бровей), я не вижу большой проблемы с этим. Нужно ли вам это? Нет. Будет ли это больно? Вряд ли.

2
ответ дан 9 июня 2011 в 03:06 Источник Поделиться

Я полностью согласна с Кэрри, но есть одна хорошая причина, один может сделать это, а именно, если вам нужно ссылаться на ваш виджет внутри закрытия или другие анонимные функции.

Пример:

 // ...
setStatus: function(status) {
var self = this;
window.setTimeout(function() {
// If you try to access "this" here, if will no longer
// be referring to your widget. You have to use your
// variable "self" here.
}, 1000);
// ...
},
// ...

2
ответ дан 10 июня 2011 в 09:06 Источник Поделиться