如何在javascript中向可以访问其变量的对象添加函数

如何在javascript中向可以访问其变量的对象添加函数,javascript,function,object,node.js,extend,Javascript,Function,Object,Node.js,Extend,我正在尝试进行一些javascript测试驱动开发,并希望用模拟dao替换dao 假设我有一个对象myObject,它有一个私有的var dao,我想为其创建一个setter: var dao = new RealDao(); function funcUsesDao() { dao.doStuff(); } 然后在另一个文件中,我有一个该对象实例的句柄,并希望添加一个setter,以便执行以下操作: var mockDao = {function doStuff() { /*moc

我正在尝试进行一些javascript测试驱动开发,并希望用模拟dao替换dao

假设我有一个对象myObject,它有一个私有的var dao,我想为其创建一个setter:

var dao = new RealDao();

function funcUsesDao() {
    dao.doStuff();
}
然后在另一个文件中,我有一个该对象实例的句柄,并希望添加一个setter,以便执行以下操作:

var mockDao = {function doStuff() { /*mock code */}};
myObject.setDao(mockDao);
myObject.funcUsesDao(); should use mock dao

环境细节是这是node.js,我有一个句柄的对象是通过执行
var myObject=require('../myObject')获得的

您将为类使用构造函数,将dao设置为RealDao,然后在setDao中将该dao设置为新dao。或者,您可以在构造函数中放置对dao的引用,并在null处将其分配给新的RealDao()。(至少,这是我对人们通常如何通过构造函数为测试分配新接口的理解)

否则,您上面列出的内容是准确的。您只需提供代码中指定的setDao方法

//something like this
function Dao(interface){
  this.dao = interface || new RealDao();
}