您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > javascript

JS的封装函数

时间:2019-09-24 10:59:14  来源:  作者:

1.封装hasPubProperty公有属性

Object.prototype.hasPubProperty = function (key) {
 if ((key) in this && !this.hasOwnProperty(key)) {
 return true;
 }
 return false;
}
复制代码

2.封装myPop,去掉末尾项

Array.prototype.myPop = function () {
 let temp = this[this.length - 1];
 this.length--;
 return temp;
 }
复制代码

3.封装myUnique数组去重

Object.prototype.hasPubProperty = function (key) {
 var obj = {};
 for (var i = 0; i < this.length; i++) {
 if (obj.hasOwnProperty(this[i])) {
 this.splice(i, 1);
 i--;
 } else {
 obj[this[i]] = this[i]
 }
 }
 }
复制代码

4.封装myPop去除最后数组一项

 Array.prototype.myPop = function () {
 let temp = this[this.length - 1];
 this.length--;
 return temp;
 }
复制代码

5.封装myPush在末尾项增加

 Array.prototype.myPush = function () {
 var l = ary.length;
 for (var i = 0; i < l; i++) {
 this[this.length] = ary[i];
 }
 return this;
 }
复制代码

6.封装myCall方法等同于call

Function.prototype.myCall = function myCall(context, ...arg) {
 context = context || window;
 let a = Symbol();
 context[a] = this;
 let res = context[a](...arg);
 delete context[a];
 return res;
 }
复制代码

7.封装myApply方法等同于apply

Function.prototype.myApply = function myApply(context, arg) {
 arg = arg || [];
 context = context || window;
 let a = Symbol();
 context[a] = this;
 let res = context[a](...arg);
 delete context[a];
 return res;
 }
复制代码

8.封装myBind方法等同于bind

Function.prototype.myBind = function (context, ...arg) {
 var _this = this;
 return function (...ary) {
 return _this.apply(context, arg.concat(ary))
 }
 }
复制代码

9.封装myNew方法等同于new

function myNew(classN, ...arg) {
 var obj = {};
 obj.__proto__ = Person.prototype;
 var res = Person.call(obj, ...arg)
 return typeof res === 'object' ? res : obj;
 }
复制代码

10.封装myInstance方法等同于instanceof

function myInstance(temp, classN) {
 let str = typeof temp;
 if (str !== 'Object' && str !== 'Function') return false;
 var left = temp.__proto__,
 right = classN.prototype;
 while (left) {
 if (left === right) return true;
 left = left.__proto__;
 }
 return false
 }
复制代码

11.封装plus和minus方法

Number.prototype.plus = function (a) {
 return this + a;
 }
Number.prototype.minus = function (a) {
 return this - a;
 }
复制代码

12.封装一个判断数据类型的方法getType

Object.prototype.getType = function () {
 var str = this.constructor.toString();
 str = str.slice(9, str.indexOf('('));
 return str.toLowerCase();
 }
复制代码

13.封装myReverse方法等同于reverse

Array.prototype.myReverse = function () {
 for (var i = 0; i < this.length / 2; i++) {
 let temp = this[i];
 this[i] = this[this.length - 1 - i];
 this[this.length - 1 - i] = temp;
 }
 return this;
 }
复制代码

14.获取数组中的最大值

Array.prototype.max = function () {
 // 三种任选其一
 return this.sort((a, b) => b - a)[0];
 return Math.max(...this);
 return Math.max.apply(Math,this);
 }
复制代码

15.求数组中的平均值

 Array.prototype.average = function(){
 return eval(this.join('+'))/this.length;
 }


Tags:JS 封装函数   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1.封装hasPubProperty公有属性Object.prototype.hasPubProperty = function (key) { if ((key) in this && !this.hasOwnProperty(key)) { return true; } return false;}复...【详细内容】
2019-09-24  Tags: JS 封装函数  点击:(132)  评论:(0)  加入收藏
▌简易百科推荐
1、通过条件判断给变量赋值布尔值的正确姿势// badif (a === &#39;a&#39;) { b = true} else { b = false}// goodb = a === &#39;a&#39;2、在if中判断数组长度不为零...【详细内容】
2021-12-24  Mason程    Tags:JavaScript   点击:(6)  评论:(0)  加入收藏
给新手朋友分享我收藏的前端必备javascript已经写好的封装好的方法函数,直接可用。方法函数总计:41个;以下给大家介绍有35个,需要整体文档的朋友私信我,1、输入一个值,将其返回数...【详细内容】
2021-12-15  未来讲IT    Tags:JavaScript   点击:(20)  评论:(0)  加入收藏
1. 检测一个对象是不是纯对象,检测数据类型// 检测数据类型的方法封装(function () { var getProto = Object.getPrototypeOf; // 获取实列的原型对象。 var class2type =...【详细内容】
2021-12-08  前端明明    Tags:js   点击:(23)  评论:(0)  加入收藏
作者:一川来源:前端万有引力 1 写在前面Javascript中的apply、call、bind方法是前端代码开发中相当重要的概念,并且与this的指向密切相关。本篇文章我们将深入探讨这个关键词的...【详细内容】
2021-12-06  Nodejs开发    Tags:Javascript   点击:(19)  评论:(0)  加入收藏
概述DOM全称Document Object Model,即文档对象模型。是HTML和XML文档的编程接口,DOM将文档(HTML或XML)描绘成一个多节点构成的结构。使用JavaScript可以改变文档的结构、样式和...【详细内容】
2021-11-16  海人为记    Tags:DOM模型   点击:(35)  评论:(0)  加入收藏
入口函数 /*js加载完成事件*/ window.onload=function(){ console.log("页面和资源完全加载完毕"); } /*jQuery的ready函数*/ $(document).ready(function(){ co...【详细内容】
2021-11-12  codercyh的开发日记    Tags:jQuery   点击:(36)  评论:(0)  加入收藏
一、判断是否IE浏览器(支持判断IE11与edge)function IEVersion() {var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串var isIE = userAgent.indexOf("comp...【详细内容】
2021-11-02  V面包V    Tags:Javascript   点击:(40)  评论:(0)  加入收藏
Null、Undefined、空检查普通写法: if (username1 !== null || username1 !== undefined || username1 !== &#39;&#39;) { let username = username1; }优化后...【详细内容】
2021-10-28  前端掘金    Tags:JavaScript   点击:(51)  评论:(0)  加入收藏
今天我们将尝试下花 1 分钟的时间简单地了解下什么是 JS 代理对象(proxies)?我们可以这样理解,JS 代理就相当于在对象的外层加了一层拦截,在拦截方法里我们可以自定义一些个性化...【详细内容】
2021-10-18  前端达人    Tags:JS   点击:(51)  评论:(0)  加入收藏
带有多个条件的 if 语句把多个值放在一个数组中,然后调用数组的 includes 方法。// bad if (x === "abc" || x === "def" || x === "ghi" || x === "jkl") { //logic } // be...【详细内容】
2021-09-27  羲和时代    Tags:JS   点击:(58)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条