我正在尝试从模块模式中调用公共方法。
我正在使用模块模式,因为它允许拆分成各种不同的JS文件,以使代码更有条理。
但是,当我调用公共方法时,我得到TypeError
并且typeof
仍未定义。
请帮忙!!提前谢谢。
function MainObject() {
this.notify = function(msg) { console.log(msg); }
}
var connObj = require("./myextobj");
var mainObj = new MainObject();
connObj.connection.handle = mainObj;
console.log(typeof connObj.connection.connect); // undefined
connObj.connection.connect(); // TypeError: Object has no method 'connect'
module.exports = {
connection: function () {
this.handle = eventhandle;
this.connect = function() {
// connect to server
handle.notify("completed connection....");
}
}
}
答案 0 :(得分:2)
这是因为您导出的对象包含connection: function ()
,这是一个构造函数,需要 newing-up 。然后,您可以访问附加到该特定实例的this
属性:
var connection = require("./myextobj").connection; // reference the constructor function
var conn = new connection(); // new-up connection
console.log(typeof conn.connect); // -> function
修改强>
如果myextobj.js
导出的唯一内容是构造函数,则无需将其包装在文字对象中。即你可以这样做:
module.exports = function Connection() {
this.handle = eventhandle;
this.connect = function() {
handle.notify("completed connection....");
}
}
然后像这样使用:
var Connection = require("./myextobj");
注意:.connection
不再附加到末尾以引用该函数。
答案 1 :(得分:-2)
给这一点。
var module = {};
module.exports = {
connection: function () {
return {
handle: eventhandle,
connect: function () {
// connect to server
handle.notify("completed connection....");
}
}
}()
}
module.exports.connection.connect()