2014-09-10 62 views
-3

入門到JS和下劃線 -Underscore.js腳本不在Node中渲染?

在下面簡單的代碼,我試圖用下劃線(_.each FXN)通過VAR animalNames遍歷,但是當我在節點在終端上運行的代碼它只是右後衛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

你能包括更多的代碼嗎?我們無法分辨您是否帶有下劃線。你也可以包括你看到的任何錯誤嗎? – Shaded 2014-09-10 20:01:59

+1

你的代碼沒有調用你的農場動物的'speak'方法......這是你的問題嗎?還是你得到錯誤? – Bart 2014-09-10 20:02:08

+1

*「但是當我在終端中運行Node中的代碼。」*然後呢?我無意中想到你。 – 2014-09-10 20:03:23

回答

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"); 

沒有下劃線(本地JavaScript在node.js中)你可以也寫:

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

'us.invoke(動物,「說」)'ftw! – Bergi 2014-09-10 20:08:38