Я новичок в Node и JS, пытаясь реализовать модуль. Внутри моего модуля я хочу иметь объект, чтобы я мог инициализировать его экземпляры в других методах моего модуля (в частности, в моем случае это объект ответа). Итак, мой код:

exports.myModule = {

//response object
Response: function()
{
    // some initializing and functions
    function testFunction(){
        console.log("test function inside object was called");
    }
}



//now i am trying to create an instance
tester: function() {
    var res = new Response();
    res.testFunction();
}
}

Однако я получаю синтаксические ошибки, которые я не понимаю (этот код не имеет смысла для его цели, так как я все еще тестирую базовое создание объекта в моем модуле,

< Сильный > EDITED

Теперь при создании нового ответа я получаю ошибку: ReferenceError: ответ не определен

0
Eysiliator 9 Янв 2017 в 21:04

3 ответа

Лучший ответ

Попробуйте что-то вроде

var Foo = {

//response object
Response: function()
{
    // some initializing and functions
    function testFunction(){
        console.log("test function inside object was called");
    }
}



//now i am trying to create an instance
tester: function() {
    var res = new Foo.Response();
    res.testFunction();
}
}
module.exports = Foo;

Во-первых - с этим огромные проблемы. Как и метод Response просто странный. Но я не хотел так сильно редактировать ваш оригинальный фрагмент.

И, как упоминалось в моем комментарии, есть лучшие способы сделать это, даже если вы исправите явные ошибки, я бы порекомендовал просто поискать учебник по Node на этом этапе.

Редактировать: Если кто-нибудь когда-либо окажется здесь, пожалуйста, обратитесь к ответу, который ОП дал ниже после выполнения некоторых общих знаний.

Рабочий пример может напоминать:

module.exports = {

    //response object
    Response: function()
    {
        // some initializing and functions
        this.testFunction = function (){
            console.log("test function inside object was called");
        }
    },


    //now i am trying to create an instance
    tester: function() {
        var res = new this.Response();
        res.testFunction();
    }
};
0
The Dembinski 9 Янв 2017 в 20:42

В конце концов я решил эту проблему, взяв объявление объекта вне модуля следующим образом:

function Response(){
// some initializing and functions
    function testFunction(){
        console.log("test function inside object was called");
    }
}

var Foo = {

//now i am trying to create an instance
tester: function() {
    var res = new Foo.Response();
    res.testFunction();
    }
}
1
Eysiliator 9 Янв 2017 в 18:42

Проблема в контексте. Когда вы создаете новый Response, он ищет его в глобальном пространстве, где эта функция не определена. Таким образом, чтобы получить доступ к функции, используйте this.Response, как я, или Foo.Response, как и The Dembinski. ,

module.exports = {

    //response object
    Response: function()
    {
        // some initializing and functions
        this.testFunction = function (){
            console.log("test function inside object was called");
        }
    },


    //now i am trying to create an instance
    tester: function() {
        var res = new this.Response();
        res.testFunction();
    }
};
0
Community 23 Май 2017 в 12:01