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));
});
答案 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();
});