Skip to content

Instantly share code, notes, and snippets.

View linxiangjun's full-sized avatar
:atom:
When Faith Endures

Artisan linxiangjun

:atom:
When Faith Endures
View GitHub Profile
@linxiangjun
linxiangjun / promise.js
Created February 25, 2020 09:16
符合Promise A+规范的代码实现
const PENDING = "PENDING";
const FULFILLED = "FULFILLED";
const REJECTED = "REJECTED";
// Promise 的处理函数
const resolvePromise = (promise2, x, resolve, reject) => {
if (promise2 === x) {
return reject(
new TypeError("Chaining cycle detected for promise #<Promise>")
);
{"lastUpload":"2022-01-09T12:30:22.629Z","extensionVersion":"v3.4.3"}
@linxiangjun
linxiangjun / easy-eventemitter.js
Created January 7, 2020 06:03
实现eventemitter的核心功能
const getListener = (fn, context) => ({
fn,
context
});
const addListener = (...rest) => {
const [emitter, event, fn, context] = rest;
const listener = getListener(fn, context || emitter);
let events = emitter.events;
@linxiangjun
linxiangjun / bubbleSort.js
Last active February 17, 2020 15:04
常用排序算法的JS实现
/**
* 冒泡排序
* 时间复杂度:O(n^2)
* 空间复杂:O(1)
* 稳定性:稳定
*/
function bubbleSort(originArr) {
const length = originArr.length;
if (!length || length < 2) return originArr;
const arr = JSON.parse(JSON.stringify(originArr));
@linxiangjun
linxiangjun / hash-router-demo.js
Created December 15, 2017 02:32
路由实现方法
class Router {
constructor() {
this.routers = {};
this.currentUrl = '';
}
router(path, callback) {
this.routers[path] = callback || function() {};
}
updateView() {
this.currentUrl = location.hash.slice(1) || '/';
@linxiangjun
linxiangjun / video-support
Created October 26, 2017 03:48
Video support
function videoSupport() {
if (!!document.createElement('video').canPlayType) {
return true;
} else {
return false;
}
}
var reg = RegExp('^(\\w){6,20}$');
@linxiangjun
linxiangjun / typeJudgment.js
Created August 13, 2017 04:24
使用偏函数来进行类型判断
var toString = Object.prototype.toString;
var isType = function (type) {
return function(obj) {
return toString.call(obj) == '[object ' + type + ']';
}
}
var isString = isType('String'),
isNumber = isType('Number'),
@linxiangjun
linxiangjun / dateSelection.js
Created July 25, 2017 07:30
Date selection
class dateCls {
constructor(x) {
this.x = x;
this.date = new Date();
}
Now () {
return this.date.toLocaleString()
.substr(0, 10)
.replace(/[\u4E00-\u9FA5]+/g, '')
@linxiangjun
linxiangjun / js-load.js
Created July 12, 2017 10:43
JS load suggestion
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src = "defer.js";
document.body.appendChild(element);
}
if (window.addEventListener) {
window.addEventListener("load", downloadJSAtOnload, false);
} else if (window.attachEvent) {
window.attachEvent("onload", downloadJSAtOnload);