如何使用module.exports从另一个文件访问object.prototype方法?

时间:2018-03-02 05:41:34

标签: javascript node.js

如果我想在另一个文件中使用对象及其方法,我该如何设置我的module.exports?

对象:

var Object = function ()
{ 
...
}

Object.prototype.foo = function (param)
{
...
}

Module.export:

module.exports = {
    Object : Object
}

module.exports = {
    Object : Object,
    foo : Object.prototype.foo
}

4 个答案:

答案 0 :(得分:3)

执行此操作的几种方法但是如果您尝试从其他文件访问原型方法,则需要实例化构造函数, 类似的东西:

例如:

// lib.js

var YourThing = function () {
}

YourThing.prototype.someMethod = function () {
  console.log('do something cool');
}

module.exports = YourThing;

// index.js

var YT = require('./lib.js');
var yourThing = new YT();
yourThing.someMethod(); 

答案 1 :(得分:0)

module.exports = Object;

这会将您的对象导出为模块。

答案 2 :(得分:0)

要从其他文件调用其他模块中的函数,您必须要求函数所在的文件并检查正确导出的模块,然后首先创建所需文件的实例,如果_Obj包含所需文件,则新_Obj ()将具有导出模块的实例。新的_Obj()。functionName()

可以访问相同的函数。

请参考以下示例:

//testNode.js
var Object1 = function ()
{ 
 console.log("fun1")
}

Object1.prototype.foo = function (param)
{
   console.log("calling other method")
}
module.exports = Object1;

//test1.js
var dir = __dirname
var path = dir + '/testNode.js'
var _Obj = require(path)

console.log(_Obj)

new _Obj().foo()

答案 3 :(得分:0)

如果您的对象未在应用中更新,则最好的方法是将其用作已执行函数并后期绑定其原型方法

const _ = require('lodash')
var Object = function ()
{ 
    ..
    _.bindAll(this); // at last bind all methods. this way you won't miss a method
}

Object.prototype.foo = function (param)
{
     ...
}

module.exports = new Object();

然后您可以调用类似的功能

const myObj = require('./object-file')
myObj.myMethod();

如果您需要可重复使用的组件,

module.exports = Object;

const _obj = require('./object-file'); // you can call this way anywhere in any function and for every require, it creates a new object.
var object = new _obj();
_obj.anyMethod();