Skip to content

Instantly share code, notes, and snippets.

View hackjutsu's full-sized avatar
:octocat:
building something great

CosmoX hackjutsu

:octocat:
building something great
View GitHub Profile
@hackjutsu
hackjutsu / object_own_keys_iteration.js
Last active January 18, 2017 03:00
Iteration on JS object's own keys.
let arr = ['a', 'b', 'c'];
Object.keys(arr).forEach(key => {
console.log(key)
});
@hackjutsu
hackjutsu / set_2_array.js
Last active January 22, 2017 05:35
Convert js Set to Array
// using Array.from
let array = Array.from(mySet);
// simply spreading the Set out in an array
let array = [...mySet];
@hackjutsu
hackjutsu / main.js
Last active February 2, 2017 08:35
[Electron keyboard shortcut binding] Register/unregister a keyboard shortcut locally to a BrowserWindow instance. Pay attention, this module will overwrite the default functionality of the original shortcut. #tags: electron,keyboard,lepton
// npm install --save electron-localshortcut
const electronLocalshortcut = require('electron-localshortcut');
const BrowserWindow = require('electron').BrowserWindow;
const win = new BrowserWindow();
win.loadUrl('https://github.com');
win.show();
electronLocalshortcut.register(win, 'Ctrl+A', () => {
@hackjutsu
hackjutsu / event_emitter.js
Last active February 5, 2017 04:17
[Node.js Events and EventEmitter] #tags: nodejs,event,eventmitter
let events = require('events');
let eventEmitter = new events.EventEmitter();
let ringBell = () => {
console.log('ring ring ring');
}
eventEmitter.on('doorOpen', ringBell);
eventEmitter.emit('doorOpen');
@hackjutsu
hackjutsu / find.sh
Last active January 24, 2017 20:10
Find command in Bash
find /path/to/dir -name "filename"
find /path/to/dir -name "*.h"
@hackjutsu
hackjutsu / includes_startsWidth_endsWith.js
Last active February 2, 2017 06:44
ES6 String #tags: string,es6
// includes() startsWith() endsWith()
s = 'Hello world!'
s.includes('o') // true
s.startsWith('Hello') // true
s.endsWith('!') // true
// 这三个方法都支持第二个参数,表示开始搜索的位置。
s.includes('Hello', 6) // false
s.startsWith('world', 6) // true
@hackjutsu
hackjutsu / array_from.js
Last active February 2, 2017 06:44
ES6 Array #tags: es6,array
/* Array.from方法用于将两类对象转为真正的数组:
1. 类似数组的对象(array-like object)
2. 可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)*/
// example1
let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
// example 2
Array.from('hello') // ['h', 'e', 'l', 'l', 'o']
@hackjutsu
hackjutsu / arrow.js
Last active February 12, 2017 17:26
ES6 function #tags: es6,function
/* ES6允许使用“箭头”(=>)定义函数。注意的是,箭头函数会自动绑定this。*/
// 如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。
let sum = (num1, num2) => num1 + num2
// 等同于
let sum = function(num1, num2) {
return num1 + num2
}
// 如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。
@hackjutsu
hackjutsu / set_example.js
Last active February 12, 2017 17:26
[ES6 Set] ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 #tags: es6,set
/* 向Set加入值的时候,不会发生类型转换,所以5和"5"是两个不同的值。 Set内部判断
两个值是否不同,使用的算法叫做“Same-value equality”,它类似于精确相等运算符
(===),主要的区别是NaN等于自身,而精确相等运算符认为NaN不等于自身。*/
// 例一
let set = new Set([1, 2, 3, 4, 4])
[...set] // [1, 2, 3, 4]
// 例二
let items = new Set([1, 2, 3, 4, 5, 5, 5, 5])
@hackjutsu
hackjutsu / map_example.js
Last active February 2, 2017 06:45
[ES6 Map] ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应,是一种更完善的Hash结构实现。 #tags: es6,map
let m = new Map()
let o = {p: 'Hello World'}
m.set(o, 'content')
m.get(o) // "content"
m.has(o) // true
m.delete(o) // true
m.has(o) // false