Skip to content

Instantly share code, notes, and snippets.

View giscafer's full-sized avatar
🎣
Work hard

Nicky Lao giscafer

🎣
Work hard
View GitHub Profile
@giscafer
giscafer / getProperty.js
Last active March 22, 2018 09:08
原生js,扩展setProperty & getProperty方法,类似lodash的_.set和_.get
/**
* 获取对象obj的属性key的值,属性key支持多层,如 a.b.c
*
* @sample
* var obj = { a: { b: { c: 1 } } }
* var result = getProperty(c,'a.b.c');
* // 结果为 1
*
* @param obj 目标对象
@giscafer
giscafer / identityCodeValid.js
Last active February 21, 2020 14:30
身份证合法校验
var identityCodeValid = function (code) {
var city = {
11: "北京",
12: "天津",
13: "河北",
14: "山西",
15: "内蒙古",
21: "辽宁",
22: "吉林",
@giscafer
giscafer / download.ts
Last active April 28, 2018 05:38
文件下载
/**
* 下载统一接口,判断浏览器是否支持a标签download属性,如果不支持采用form表单提交方式下载文件
* @param url
* @param fileName
*/
export function download(url: string, fileName?: string) {
const isSupportDownload = 'download' in document.createElement('a');
if (isSupportDownload) {
@giscafer
giscafer / service-worker-demo.js
Created May 4, 2018 08:32
service worker demo
// download & parse
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('./sw.js?' + new Date().getTime()).then(function(registration) {
// 注册成功
console.log('ServiceWorker registration successful with scope:' + registration.scope);
}).catch(function(err) {
// 注册失败1
console.log('ServiceWorker registration failed:', err);
});
}
@giscafer
giscafer / generate_hash.js
Created May 23, 2018 03:34
generate hash version for building
/*--------------------------------------------------------------
* Copyright (c) Nickbing Lao<giscafer@outlook.com>. All rights reserved.
* Licensed under the MIT License.
*-------------------------------------------------------------*/
const fs = require("fs");
const path = require("path");
const reg = /(main|styles|scripts|polyfills|inline).[0-9a-z]*.bundle.(css|js)/g;
let indexPagePath = path.join(__dirname, './dist/index.html');
@giscafer
giscafer / EventEmitter.js
Created May 23, 2018 07:20
EventEmitter 事件式编程
"use strict"
/**事件式编程 */
class EventEmiter {
constructor(debug) {
this._debuger_ = !!debug;
this._callback_ = {};
this.commonApi();
}
@giscafer
giscafer / Stack.js
Created July 21, 2018 07:41
JavaScript数据结构栈模拟
/* 栈实现 */
const Stack = (() => {
// 闭包使得item为私有变量,避免外部调用(ES6无私有变量)
let item = new WeakMap();
// 模拟实现栈 Stack
class Stack {
constructor() {
item.set(this, []);
}
@giscafer
giscafer / Queue.js
Last active August 26, 2019 10:02
JavaScript类模拟队列实现
/**
* @author: giscafer ,https://github.com/giscafer
* @date: 2018-07-25 15:59:02
* @description: 类实现队列模拟
*/
const Queue = (() => {
// 闭包实现私有变量
let item = new WeakMap();
@giscafer
giscafer / LinkedList.js
Created August 6, 2018 07:18
链表数据结构实现
/**
* 链表实现
*/
/* 用来创建链表中的每个项 */
class LinkNode {
constructor(element) {
this.element = element;
this.next = null;
}
@giscafer
giscafer / HashTable.js
Created August 9, 2018 02:38
散列表(散列算法的作用是尽可能快地在数据结构中找到一个值)
/* 散列表*/
// 缺点:键的冲突度较高
class HashTable {
constructor() {
this.table = [];
}
/* 散列函数 */
loseloseHashCode(key) {