一些常用的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)且不为nullif (Object.prototype.toString.call(obj[prop]) == '[object Object]') {// 对象result[prop] = {};} else {// 数组result[prop] = [];}deepClone(obj[prop], result[prop])} else {// 原始值或funcresult[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、返回当前的时间(年月日时分秒)

function getDateTime() {var date = new Date(),year = date.getFullYear(),month = date.getMonth() + 1,day = date.getDate(),hour = date.getHours() + 1,minute = date.getMinutes(),second = date.getSeconds();month = checkTime(month);day = checkTime(day);hour = checkTime(hour);minute = checkTime(minute);second = checkTime(second);function checkTime(i) {if (i < 10) {i = "0" + i;}return i;}return "" + year + "年" + month + "月" + day + "日" + hour + "时" + minute + "分" + second + "秒"
}

6、获得滚动条的滚动距离

function getScrollOffset() {if (window.pageXOffset) {return {x: window.pageXOffset,y: window.pageYOffset}} else {return {x: document.body.scrollLeft + document.documentElement.scrollLeft,y: document.body.scrollTop + document.documentElement.scrollTop}}
}

7、获得视口的尺寸

function getViewportOffset() {if (window.innerWidth) {return {w: window.innerWidth,h: window.innerHeight}} else {// ie8及其以下if (document.compatMode === "BackCompat") {// 怪异模式return {w: document.body.clientWidth,h: document.body.clientHeight}} else {// 标准模式return {w: document.documentElement.clientWidth,h: document.documentElement.clientHeight}}}
}

8、封装forEach方法

Array.prototype.myForEach = function (func, obj) {var len = this.length;var _this = arguments[1] ? arguments[1] : window;// var _this=arguments[1]||window;for (var i = 0; i < len; i++) {func.call(_this, this[i], i, this)}
}

9、封装数组的map方法

Array.prototype.myMap = function (func) {var arr = [];var len = this.length;var _this = arguments[1] || window;for (var i = 0; i < len; i++) {arr.push(func.call(_this, this[i], i, this));}return arr;
}

10、封装filter方法

Array.prototype.myFilter = function (func, obj) {var len = this.length;var arr = [];var _this = arguments[1] || window;for (var i = 0; i < len; i++) {func.call(_this, this[i], i, this) && arr.push(this[i]);}return arr;
}

JavaScript 之封装方法(10种)相关推荐

  1. 30个深度学习库:按Python、C++、Java、JavaScript、R等10种语言分类

    30个深度学习库:按Python.C++.Java.JavaScript.R等10种语言分类 包括 Python.C++.Java.JavaScript.R.Haskell等在内的一系列编程语言的深度 ...

  2. javascript数组去重的10种方法

    亲爱的小伙伴,对于数组javascript中的数组去重方法你知道多少种呢?学会如何对数组进行去重对于javascript的学习来说也是十分重要的,下边就让我来分享一下我所知道的集中数组去重的方法吧! ...

  3. JavaScript最全的10种跨域共享的方法

    在客户端编程语言中,如javascript和ActionScript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义.同源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和 ...

  4. 33个前端常用的JavaScript函数封装方法

    星标公众号 前端开发博客,回复"交流" 加入我们一起学习,天天进步 这是我在实际开发中常用的一些js函数方法,总结一下,以后可以,有需要的小伙伴可以参考下百度就完事了,不不不!我亲 ...

  5. python封装方法有几种_python之--------封装

    一.封装: 补充封装: 封装: 体现在两点:1.数据的封装(将数据封装到对象中) obj= Foo('宝宝',22)2.封装方法和属性,将一类操作封装到一个类中classFoo:def __init_ ...

  6. javascript中数组的22种方法

    前面的话数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详细 ...

  7. linux入门_Linux入门的10种方法

    linux入门 文章什么是Linux用户? 作者:安德森·席尔瓦(Anderson Silva)明确指出,如今,只要您对"使用Linux"的定义足够广泛,人们使用Linux(以某种 ...

  8. JavaScript 获得对象的N种方法 [转]

    JavaScript 获得对象的N种方法 [转] 方法如下: document.getElementById(ID)        //获得指定ID值的对象 document.getElementsB ...

  9. 超全总结:Go 读文件的 10 种方法

    大家好,我是明哥. Go 中对文件内容读写的方法,非常地多,其中大多数是基于 syscall 或者  os 库的高级封装,不同的库,适用的场景又不太一样,为免新手在这块上裁跟头,我花了点时间把这些内容 ...

最新文章

  1. Apache Thrift使用简介
  2. 【WPF】屏幕右下角消息提示框
  3. linux 暂停一段时间,sleep命令_Linux sleep命令:让程序暂停或休眠一段时间
  4. JavaScript 语言基础知识点图示
  5. 【转】编译DCMTK
  6. mysql root mysqld_MySQL how to run mysqld as root
  7. MIPCache 域名升级
  8. 宣战抖音!腾讯与头条之战的新局面与猜想
  9. python代码技巧_几个小技巧让你的Python代码更Pythonic
  10. LSTM+attention代码原理详解
  11. POJ 2478:Farey Sequence
  12. 计蒜客 2016计蒜之道比赛 初赛第四场 记录
  13. **尾座体工艺工装设计尾座体工艺工装设计**
  14. 高中计算机技术基础教学ppt,高中信息技术教学课件
  15. 50行Python代码制作一个计算器
  16. WIN7电脑语言栏不见了---解决方案
  17. DBeaver设置Maven镜像仓库
  18. Springboot过滤器中注入Bean
  19. 使用 PHP 和 MySQL 的安全登录系统
  20. 竞价账户结构的5要素

热门文章

  1. oraclestddev函数_oracle常用函数归纳
  2. MATLAB绘制单位抽样序列
  3. java 提高反射性能_java反射性能
  4. 《白帽子讲Web安全》学习笔记
  5. newCoder Wannafly挑战赛4:C 割草机
  6. 数控等离子切割机,等离子切割机
  7. 计算机基础测试题及答案
  8. 半导体(TSS)放电管的两大选购注意事项及选型小策略
  9. 基于C++的递归下降语法分析设计原理与实现
  10. springboot毕设项目校园快递代领平台dtcuo(java+VUE+Mybatis+Maven+Mysql)