Свойство объекта Javascript недоступно из другого свойства (функции) - PullRequest
1 голос
/ 04 июля 2010

Быстрый вопрос, почему моя ссылка на weekdays внутри change_date() дает weekdays is undefined ошибку в Firebug?

Я тоже пробовал this.weekdays, тоже самое.

Как мне исправить это?

var timesheet_common = {

    weekdays : ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],

    change_date: function() {
        $('#text_input').val( weekdays[(new Date()).getDay()] );
    }

};

Ответы [ 4 ]

1 голос
/ 04 июля 2010

В JavaScript функция не связана с ее моделью.Вы могли бы сделать что-то вроде этого:

var timesheet_common = (function(){

    var weekdays = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];

    var change_date = function() {
        $('#text_input').val( weekdays[(new Date()).getDay()] );
    };

    return { weekdays: weekdays, change_date: change_date }

})();
1 голос
/ 04 июля 2010

Используйте this.weekdays, потому что это объект.

Редактировать: я пытался с this, и у меня это сработало.

0 голосов
/ 22 августа 2012

Есть две проблемы с вашим кодом:

  1. Внутри change_date() вы должны ссылаться на weekdays как this.weekdays, поскольку они оба определены в одном и том же объекте.

  2. Когда вы используете change_date() в качестве обработчика кликов, вы должны использовать $.proxy(timesheet_common, 'change_date') вместо этого;это гарантирует, что change_date() вызывается в контексте timesheet_common, а не по элементу, по которому щелкнули.

0 голосов
/ 05 июля 2010
function TimesheetCommon(){
    this.weekdays = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
}
TimesheetCommon.prototype.change_date = function(){
     $('#text_input').val( this.weekdays[(new Date()).getDay()] );
}

var timesheet_common = new TimesheetCommon();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...