今日长缨在手,何时缚住苍龙。这篇文章主要讲述常用的前端JavaScript方法封装相关的知识,希望能为你提供帮助。
1、输入一个值,返回其数据类型**
function type(para) {
return Object.prototype.toString.call(para)
}
2、数组去重
function unique1(arr) {
return [...new Set(arr)]
}
function unique2(arr) {
var obj = {};
return arr.filter(ele => {
if (!obj[ele]) {
obj[ele] = true;
return true;
}
})
}
function unique3(arr) {
var result = [];
arr.forEach(ele => {
if (result.indexOf(ele) == -1) {
result.push(ele)
}
})
return result;
}
3、字符串去重
String.prototype.unique = function () {
var obj = {},
str = ,
len = this.length;
for (var i = 0; i < len; i++) {
if (!obj[this[i]]) {
str += this[i];
obj[this[i]] = true;
}
}
return str;
}
###### //去除连续的字符串
function uniq(str) {
return str.replace(/(\\w)\\1+/g, $1)
}
4、深拷贝 浅拷贝
//深克隆(深克隆不考虑函数)
function deepClone(obj, result) {
var result = result || {};
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
if (typeof obj[prop] == object & & obj[prop] !== null) {
// 引用值(obj/array)且不为null
if (Object.prototype.toString.call(obj[prop]) == [object Object]) {
// 对象
result[prop] = {};
} else {
// 数组
result[prop] = [];
}
deepClone(obj[prop], result[prop])
} else {
// 原始值或func
result[prop] = obj[prop]
}
}
}
return result;
}
// 深浅克隆是针对引用值
function deepClone(target) {
if (typeof (target) !== object) {
return target;
}
var result;
if (Object.prototype.toString.call(target) == [object Array]) {
// 数组
result = []
} else {
// 对象
result = {};
}
for (var prop in target) {
if (target.hasOwnProperty(prop)) {
result[prop] = deepClone(target[prop])
}
}
return result;
}
// 无法复制函数
var o1 = jsON.parse(jsON.stringify(obj1));
5、reverse底层原理和扩展
// 改变原数组
Array.prototype.myReverse = function () {
var len = this.length;
for (var i = 0; i < len; i++) {
var temp = this[i];
this[i] = this[len - 1 - i];
this[len - 1 - i] = temp;
}
return this;
}
6、圣杯模式的继承
function inherit(Target, Origin) {
function F() {};
F.prototype = Origin.prototype;
Target.prototype = new F();
Target.prototype.constructor = Target;
// 最终的原型指向
Target.prop.uber = Origin.prototype;
}
【常用的前端JavaScript方法封装】7、找出字符串中第一次只出现一次的字母
String.prototype.firstAppear = function () {
var obj = {},
len = this.length;
for (var i = 0; i < len; i++) {
if (obj[this[i]]) {
obj[this[i]]++;
} else {
推荐阅读
- ios技术分享| iOS 发布 framework 到 Cocoapods 以及常见问题
- #私藏项目实操分享# 使用 RxJs Observable 来避免 Angular 应用中的 Promise 使用
- 有循环就是O(n)时间复杂度吗()
- #yyds干货盘点# web安全day21(学习使用最基本的批处理程序)
- 字节码引用检测原理与实战
- 准时下班系列!Access合集之第1集—多层级联下拉框
- 深入Vuex最佳实践
- #yyds干货盘点# 初识ElastricSearch
- QCon-OPPO数据平台Cloud Lake 降本增效实践