Вопрос

MyLibrary.MyModule =
        (
            function initialise() {
                this.id = id;
                this.c = document.getElementById(id);
                this.ctx = this.c.getContext('2d');

                this.properties = {
                    setup: {
                        backgroundColour: options.setup.backgroundColour || 'black'
                    },

                    scale: {
                        show: options.scale.show || true,
                        colour: options.scale.color || 'white'
                    },
                }
                console.log(properties.setup.baseFontSize);
            }
        )(id, options);

Я звоню этому коду, используя

new MyLibrary.MyModule('c',options);

Но «ID» и опции, кажется, не определены.
Кто -нибудь может помочь?

Это было полезно?

Решение

Ваш MyLibrary.MyModule сам есть undefined. Анкет Это потому, что вы вызывает анонимную функцию без возврата значения, чтобы назначить ее.

Я предполагаю, что вы хотели сделать это вместо этого:

MyLibrary.MyModule = function initialise(id, options) {
            this.id = id;
            this.c = document.getElementById(id);
            this.ctx = this.c.getContext('2d');

            this.properties = {
                setup: {
                    backgroundColour: options.setup.backgroundColour || 'black'
                },

                scale: {
                    show: options.scale.show || true,
                    colour: options.scale.color || 'white'
                },
            }
            console.log(properties.setup.baseFontSize);
        };

Теперь вы можете сделать:

var inst = new MyLibrary.MyModule('c',options);

... и 'c' а также options будет получен в качестве аргументов для конструктора.

Если ваша цель для Сразу же вызвано выражение функции должен был закрыть какое -то значение по умолчанию, на которое мог ссылаться конструктор. возвращаться функция, которая ссылается на это значение.

Другие советы

Как написано, я не думаю, что это сделает что -то вроде того, что вы хотите. Вы инициализации "mylibrary.mymodule", чтобы быть в основном ничего; Там нет возвращаемого значения из этой функции «инициализировать», и вы называете ее так, как будто она имела ее.

Я не могу сказать, что вы пытаетесь сделать, но:

MyLibrary.MyModule = (function whatever() { /* ... */ })(id, options);

означает, «вызовите функцию что бы ни С списком аргументов, состоящих из значений переменной «ID» и переменной «параметров», а затем установите свойство «MyModule» на объект, на который упоминается «MyLibrary», любому значению, возвращаемому из этого вызова функции ».

Когда дым очищается, «mylibrary.mymodule» не будет функцией, насколько я могу судить. Возможно, если вы объясните, что вы хочу Это означает, тогда кто -то может помочь исправить это.

Вы хотите что -то подобное:

MyLibrary.MyModule = function(id, options) {
    this.id = id;
    this.c = document.getElementById(id);
    this.ctx = this.c.getContext('2d');

    this.properties = {
        setup: {
            backgroundColour: options.setup.backgroundColour || 'black'
        },

        scale: {
            show: options.scale.show || true,
            colour: options.scale.color || 'white'
        },
    }
};
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top