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

标签 javascript function object node.js extend

我正在尝试做一些 javascript 测试驱动的开发,并想用模拟的替换 dao。

假设我有一个对象 myObject,它有一个私有(private) 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()。 (至少,这是我对人们通常如何通过构造函数分配新接口(interface)进行测试的理解)

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

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

关于javascript - 如何向可以访问其变量的javascript对象添加函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7547816/

相关文章:

javascript - javascript 有 main 方法吗?我想实例化变量并在特定时间运行它们。这可能吗?

sharepoint - 如何在 PowerShell 函数中安全地处理 SharePoint 对象?

C# 对象初始化选项

javascript - 如何从多深度 JavaScript 对象中删除空属性?

javascript - "Rails way"应用 javascript 链接

javascript - 关于react中函数类型的解释

JavaScript - 创建元素并设置属性

javascript - 函数对象在什么时候具有属性?

c++ - 我应该使用哪种对象识别算法?

php - 如何让 javascript 读取 php 文件的输出