Skip to content

Instantly share code, notes, and snippets.

View haingdc's full-sized avatar

Hai.Nguyen Github haingdc

View GitHub Profile
@haingdc
haingdc / addClass.js
Created March 13, 2018 04:52
A Gentle Introduction to Functional JavaScript: Part 3
var addClass = function(className, element) {
element.className += ' ' + className;
return element;
}
@haingdc
haingdc / map.js
Created March 13, 2018 04:52
A Gentle Introduction to Functional JavaScript: Part 3
var map = function(callback, array) {
var newArray = [];
for (var i = 0; i < array.length; i = i + 1) {
newArray[i] = callback(array[i], i);
}
return newArray;
}
@haingdc
haingdc / deeDum.js
Created March 13, 2018 04:53
A Gentle Introduction to Functional JavaScript: Part 3
var ids = ['DEE', 'DUM'];
// (chưa cần hiểu bind vội) Mục đích là để thu được các thẻ DOM có id là “DEE”, “DUM”
var elements = map(document.getElementById.bind(document), ids);
// thêm tên class cho các thẻ DOM thu được
map(addClass, elements);
@haingdc
haingdc / addTweedleClass.js
Created March 13, 2018 04:54
A Gentle Introduction to Functional JavaScript: Part 3
var addTweedleClass = function(el) {
return addClass('tweedle', el);
}
@haingdc
haingdc / deeDum2.js
Created March 13, 2018 04:55
A Gentle Introduction to Functional JavaScript: Part 3
var ids = ['DEE', 'DUM'];
var elements = map(document.getElementById.bind(document), ids);
elements = map(addTweedleClass, elements); // 🌟
@haingdc
haingdc / addBoyClass.js
Created March 13, 2018 04:55
A Gentle Introduction to Functional JavaScript: Part 3
var addBoyClass = function(el) {
return addClass('boy', el);
}
@haingdc
haingdc / partialFirstOfTwo.js
Created March 13, 2018 04:56
A Gentle Introduction to Functional JavaScript: Part 3
var partialFirstOfTwo = function(fn, param1) {
return function(param2) {
return fn(param1, param2);
}
}
@haingdc
haingdc / addTweedleBoy.js
Created March 13, 2018 04:57
A Gentle Introduction to Functional JavaScript: Part 3
var addTweedleClass = partialFirstOfTwo(addClass, 'tweedle');
var addBoyClass = partialFirstOfTwo(addClass, 'boy');
var ids = ['DEE', 'DUM'];
var elements = map(document.getElementById.bind(document), ids);
elements = map(addTweedleClass, elements);
elements = map(addBoyClass, elements);
@haingdc
haingdc / partial.js
Created March 13, 2018 04:58
A Gentle Introduction to Functional JavaScript: Part 3
var argsToArray = function(args) {
return Array.prototype.slice.call(args, 0);
}
var partial = function() {
// chuyển đổi đối-tượng-giống-mảng sang một mảng mới
var args = argsToArray(arguments);
// shift() cho phép lấy ra phần tử đầu tiên của mảng. Trong trường hợp này phần tử đầu tiên là một hàm. args sẽ chứa các các đối số còn lại.
var fn = args.shift(); // 🐘
@haingdc
haingdc / twinklePartial.js
Created March 13, 2018 04:59
A Gentle Introduction to Functional JavaScript: Part 3
var twinkle = function(noun, wonderAbout) {
return 'Twinkle, twinkle, little ' +
noun + '\nHow I wonder where you ' +
wonderAbout;
}
// fix-cứng noun
var twinkleBat = partial(twinkle, 'bat');
twinkleBat('are at'); // Twinkle, twinkle, little bat\nHow I wonder where you are at