Underscore.js脚本无法在Node中呈现?

时间:2014-09-10 19:59:42

标签: javascript node.js underscore.js

Noob对JS和下划线 -

在下面的简单代码中,我尝试使用下划线(_.each fxn)迭代var animalNames,但是当我在终端中的Node中运行代码时,它会直接回到cmd提示符即。什么都没有。请帮忙解释一下发生了什么。

function AnimalMaker(name) {
    return { speak: function () { console.log("my name is ", name); } };
};
var animalNames = ['', '', ''];

var farm = [];

us.each(animalNames, function (name) {
farm.push(AnimalMaker(name));
});

1 个答案:

答案 0 :(得分:2)

首先,在这种情况下,map方法更合适,因为您将名称数组映射到动物数组

// I renamed AnimalMaker
// In JS it's a convention to capitalize constructors and keep normal functions camel-case
var createAnimal = function(name) {
    return {
        speak: function() { console.log("my name is", name); }
    };
};

var names = ["Chicken", "Cow", "Pig"];
var animals = us.map(names, createAnimal);

使用此代码,您已创建动物列表。现在你仍然需要让这些动物说话:

us.each(animals, function(animal) {
    animal.speak();
});

或使用invoke为列表中的每个对象调用方法:

us.invoke(animals, "speak");

如果没有下划线(node.js中的本机javascript),您也可以写:

var animals = names.map(createAnimal);
animals.forEach(function(animal) {
    animal.speak();
});