Передача параметра к функции закрытия в JavaScript
-
13-10-2019 - |
Вопрос
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'
},
}
};