【问题标题】:how to add function to an object in javascript that can access its variables如何在javascript中向可以访问其变量的对象添加函数
【发布时间】:2011-11-24 18:11:09
【问题描述】:

我正在尝试做一些 javascript 测试驱动开发,并且想用模拟的替换一个 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');获得的

【问题讨论】:

    标签: javascript function object node.js extend


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 2010-11-07
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 2017-06-09
      相关资源
      最近更新 更多