Skip to content

Instantly share code, notes, and snippets.

View lushijie's full-sized avatar

Shijie Lu lushijie

  • Meituan && Qihoo 360
  • Beijing
View GitHub Profile
@lushijie
lushijie / getThirdResoure.js
Created December 25, 2017 06:39
获取本网站引用的第三方资源
function getThirdResoure() {
var resp = null;
var tags = document.querySelectorAll('iframe[src],frame[src],script[src],link[rel=stylesheet],object[data],embed[src]');
for(var i = 0; i < tags.length; i++){
var tag = tags[i];
var a = document.createElement('a');
a.href = tag.src||tag.href||tag.data;
if(a.hostname != location.hostname){
resp = resp || [];
resp.push({name: tag.localName, href: a.href});
@lushijie
lushijie / decToRadixN.js
Last active December 19, 2017 07:44
十进制转化为 n 进制
let CHARS = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789-_.~!*()'; // except \'
function decToRadixN(radixChars, numLen) {
let result = [];
let radix = radixChars.length;
return function cacl(dec) {
result.unshift(dec % radix);
if (dec >= radix) {
dec = Math.floor(dec / radix);
return cacl(dec, radix);
}
@lushijie
lushijie / strLen.js
Last active December 28, 2017 10:14
返回字符串的实际长度
// 返回字符串的实际长度, 一个汉字算2个长度
String.prototype.strlen = function () {
return this.replace(/[^\x00-\xff]/g, "**").length;
}
@lushijie
lushijie / ~~.js
Created May 19, 2017 04:00
去除小数点
// ~符号用在JavaScript中有按位取反的作用,~~即是取反两次,而位运算的操作值要求是整数,其结果也是整数,所以经过位运算的都会自动变成整数,可以巧妙的去掉小数部分,类似于parseInt,比如:
let a = 1.23;
let b = -1.23;
console.log(~~a); // 1
console.log(~~b); // -1
@lushijie
lushijie / AOP.js
Created May 19, 2017 03:33
AOP 切面编程
Function.prototype.before = function(beforefn){
var _self = this; //保存原函数的引用
return function() { //返回包含了原函数和新函数的 ‘代理’函数
beforefn.apply(this, arguments); //执行新函数,修正this,新函数在原函数之前执行
return _self.apply(this, arguments); //执行原函数,并保证this不会被劫持
}
}
Function.prototype.after = function(afterfn) {
var _self = this;
@lushijie
lushijie / arrayReduce.js
Last active December 28, 2017 10:13
array-reduce 携带初始值
// reduce方法
let arr = [1, 2, 3, 4, 5, 6];
let reduceResult = arr.reduce((x, y) => {
return x + y
}, 123);
console.log(reduceResult);
@lushijie
lushijie / arrayUnique.js
Last active December 28, 2017 10:12
数组去重
Array.prototype.unique = function() { //查找索引 indexOf
var ret = []
for (var i = 0; i < this.length; i++) {
if (ret.indexOf(this[i]) == -1) {
ret.push(this[i])
}
}
return ret;
}
Array.prototype.unique = function() { //借用对象
@lushijie
lushijie / class-weakmap.js
Last active February 12, 2024 00:29
es6 weakMap private property
const privateProps = new WeakMap();
function _convertToLowercase(val) {
return val.toLowerCase();
}
class Person {
constructor(name) {
privateProps.set(this, {name: name});
}
getName() {
return _convertToLowercase(privateProps.get(this).name);
@lushijie
lushijie / compareVerison.js
Created October 13, 2016 02:51
版本比较
var versions= [{"version":"1.3.0-beta.2"},{"version":"1.3.0-beta.19"},{"version":"1.3.0-beta.18"},{"version":"1.3.0-beta.17"},{"version":"1.3.0-beta.16"},{"version":"1.3.0-beta.15"},{"version":"1.3.0-beta.14"},{"version":"1.3.0-beta.13"},{"version":"1.3.0-beta.12"},{"version":"1.3.0-beta.11"},{"version":"1.3.0-beta.10"},{"version":"1.3.0-beta.1"},{"version":"1.3.0"},{"version":"1.2.9"},{"version":"1.2.8"},{"version":"1.2.7"},{"version":"1.2.6"},{"version":"1.2.5"},{"version":"1.2.4"},{"version":"1.2.30"},{"version":"1.2.3"},{"version":"1.2.29"},{"version":"1.2.28"},{"version":"1.2.27"},{"version":"1.2.26"},{"version":"1.2.25"},{"version":"1.2.24"},{"version":"1.2.23"},{"version":"1.2.22"},{"version":"1.2.21"},{"version":"1.2.20"},{"version":"1.2.2"},{"version":"1.2.19"},{"version":"1.2.18"},{"version":"1.2.17"},{"version":"1.2.16"},{"version":"1.2.15"},{"version":"1.2.14"},{"version":"1.2.13"},{"version":"1.2.12"},{"version":"1.2.11"},{"version":"1.2.10"},{"version":"1.2.1"},{"version":"1.2.0rc3"},{"version":
@lushijie
lushijie / chainable.js
Created June 12, 2016 08:47
链式调用
function chainable(fn) {
console.info('a', this);//window
return function () {
console.info('b1', this);
fn.apply(this, arguments);
console.info('b2', this);
return this;
};
}