【问题标题】:Why loop over an internal object rather than the object received in a node.js module?为什么要遍历内部对象而不是 node.js 模块中接收的对象?
【发布时间】:2014-01-11 16:51:38
【问题描述】:

以下 nodejs 模块示例(来自 Lynda.com 节点课程)在传入一些信息时设置模块的 values 对象。假设模块名为“飞行”。

module.exports = function (info) {

    var values = {
        number: null,
        origin: null,
        destination: null,
        departs: null,
        arrives: null,
        actualDepart: null,
        actualArrive: null
    };

    for(var prop in values) {
        if(values[prop] !== 'undefined') {
            values[prop] = info[prop];
        }
    }

    var functions = {
        triggerDepart: function () {
            values.actualDepart = Date.now();
        },
        triggerArrive: function () {
            values.actualArrive = Date.now();
        },
        getInformation: function () {
            return values;
        }
    };

    return functions;

};

调用示例:

var ausdca = {
    number: 382,
    origin: 'AUS',
    destination: 'DCA'
};

var ad = flight(ausdca);

console.log(ad.getInformation());

我很想知道开发人员选择循环值而不是传入的 info 对象是否重要。为什么不这样做:

    for(var prop in info) {
        if(values[prop] !== 'undefined') {
            values[prop] = info[prop];
        }
    }

这只是编程选择的一种风格/艺术,还是节点/javascript中的一个重要区别?我原以为如果你遍历values,就永远不会有一个未定义的值,如 null != undefined。

【问题讨论】:

  • 作者只想在对象中保留预定义的键。

标签: javascript node.js


【解决方案1】:

如果您遍历values,则唯一可能的分配是values 已经拥有属性的分配。

如果循环info,模块的用户可以将新属性引入values。`

【讨论】:

  • 你能解释一下为什么作者不想要values 中的新属性吗?
  • 新属性占用内存。不使用新属性。那为什么还要给他们占内存呢?
猜你喜欢
  • 2019-09-06
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
  • 2015-11-01
  • 1970-01-01
  • 2019-04-10
相关资源
最近更新 更多