分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

js中的内置方法的兼容写法

发布时间:2023-09-06 01:25责任编辑:顾先生关键词:js

1、如果浏览器不支持every属性,every的实现原理

if(Array.prototype.every===undefined){ ????Array.prototype.every=function(fun){ ?????//遍历当前数组中每个元素 ?????for(var i=0;i<this.length;i++){ ?????????if(this[i]!==undefined){//调用fun,依次传入当前元素值,位置i,当前数组作为参数 ?,将返回值,保存在变量r中 ?????????var r=fun(this[i],i,this); ?????????if(r==false){//如果r为false ????????????return false;//返回false ?????????} ?????????} ??????????}//(遍历结束) ??????return true;//返回true ????} ?}

2、如果浏览器不支持some属性,some的实现原理

if(Array.prototype.some===undefined){ ????Array.prototype.some=function(fun){ ???????for(var i=0;i<this.length;i++){ ???????if(this[i]!==unefined){ ?????????var r=fun(this[i],i,this); ?????????????if(r==true){ return true; } ???????????????} ???????????} ???????return false; ????} ?????}

3、浏览器不支持map属性,map的实现原理

if(Array.prototype.map===undefined){ ????Array.prototype.map=function(fun){ ?????//创建空数组: newArr ?????var newArr=[]; ?????//遍历当前数组中每个元素 ?????for(var i=0;i<this.length;i++){ ????????//如果当前元素不是undefined ????????if(this[i]!==undefined){//判断稀疏数组//调用fun传入当前元素值,位置i,当前数组,将结果保存在r中 ?????????????//将newArr的i位置赋值为r ?????????var r=fun(this[i],i,this); ?????????????????newArr[i]=r; ????????} ?????}//(遍历结束) ?????return newArr;//返回newArr ????} ?}

4、如果浏览器不支持reduce属性,reduce的实现原理

if(Array.prototype.reduce===undefined){ ????Array.prototype.reduce=function(fun,base){ ??????base===undefined&&(base=0); ??????for(var i=0;i<this.length;i++){ ?????if(this[i]!==undefined){ ????????base=fun(base,this[i],i,this); ?????} ??????????} ??????return base; ????????} ?}

5、如果浏览器不支持bind属性, bind函数的实现原理

if(Function.prototype.bind===undefined){ ????Function.prototype.bind=function(obj/*,参数列表*/){ ?????var fun=this;//留住this ?????????????//*****将类数组对象,转化为普通数组 ?????var args=Array.prototype.slice.call(arguments,1); ?????//args保存的就是提前绑定的参数列表 ?????/*function slice(1){ ????????var sub=[]; ????????for(var i=0;i<length;i++){ ?????????sub.push(arguments[i]); ????????} ????????return sub; ?????}*/ ?????return function(){ ????????????????//将后传入的参数值,转为普通数组 ??????????????var innerArgs=Array.prototype.slice.call(arguments);//将之前绑定的参数值和新传入的参数值,拼接为完整参数之列表 ????????var allArgs=args.concat(innerArgs) ???????//调用原始函数fun,替换this为obj,传入所有参数 ???????fun.apply(obj,allArgs); ?????} ????} ?}

js中的内置方法的兼容写法

原文地址:http://www.cnblogs.com/wu-web/p/7860184.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved