Я работаю через модуль Node.js, но я зациклился на том, как экспортировать прототип таким образом, чтобы сделать методы доступными.Объектные методы недоступны после включения с требованием
Возьмем, например, следующий код:
var myobj = function(param) {
this.test = 'a test';
return this.param = param;
};
myobj.prototype = {
indexpage: function() {
console.log(this.test);
return console.log(this.param);
}
};
var mo = new myobj('hello world!');
mo.indexpage();
Мои результаты, как и ожидалось:
a test
hello world!
Если взять тот же код и поместить его в другой файл с модулем. экспорт:
somefile.js
var myobj = function(param) {
this.test = 'a test';
return this.param = param;
};
myobj.prototype = {
indexpage: function() {
console.log(this.test);
return console.log(this.param);
}
};
// the only line that is different
module.exports = myobj;
app.js код
var MyObj = require('myobj.js');
var mo = new MyObj('hello world!');
mo.indexpage();
Теперь я получаю TypeError: Object #<Object> has no method 'indexpage'
Где я буду неправильно? Я работаю над этой отдельной проблемой часами; мое основное понимание javascript не помогает мне понять эту проблему больше, чем искать форумы.
Ах-ха! Я _knew_ возился с coffeescript, пока я изучал node.js, была плохая идея! Из-за этого я узнал что-то ценное. Благодаря! – JoBu1324
Говорилось слишком скоро - теперь у меня нет доступа к свойствам объекта в моих методах - например. 'this.param', но только когда я объявляю свои маршруты. Есть идеи? – JoBu1324
@ JoBu1324 Пока вы правильно вызываете методы, это должно работать. Если вы используете CoffeeScript, вам, вероятно, также следует использовать его систему классов, поскольку он автоматически запрещает функции «возвращать» внутри конструктора. – loganfsmyth