js源码-自定义数组的pop和shift方法
本文将自定义_pop和_shift来模拟数组的pop和shift方法
_pop:
/*
*js中数组的pop方法:删除数组的最后一个元素,把数组的长度减1,并且返回删除的这个元素;如果数组为空,则pop()不改变数组,并且返回undefined;
*/
Array.prototype._pop=function(){//自定义一个方法_pop
if(!this.length) return undefined; //如果数组的长度为零,调用该方法的时候,直接返回一个undefined
var end=this[this.length-1]; //获取最后一个值赋值给变量end;
this[this.length-1]=null; //把最后一个值释放掉
this.length=this.length-1; //把数组的长度减1
return end; //返回被尾部被删除的元素
}
var eg=[1,2,3,4]; //例子
var resultdata=eg._pop(); //执行数组方法
console.log(eg,resultdata); //执行结果
_shift:
/*
*js中数组的操作方法shift(),用于把数组的第一个元素从其中删除。并返回第一个元素的值;
*/
Array.prototype._shift=function(){//在数组的原型链上自定义——shift方法
var start=this[0]; //存储数组中第一个元素
this[0]=null;//然后把数组中的第一个元素释放
for(var i=0;i<this.length;i++){//数组元素做一个循环遍历
this[i]=this[i+1];//数组中,元素的前一个元素跟后一个元素交换位置
}
this.length=this.length-1;//去除数组的最后一位元素
return start;//返回数组中的第一个元素
}
var eg=[1,23,34,3434,34345];//例子
var result=eg._shift();//执行方法,并且获取返回值
console.log(eg,result);//执行结果
js源码-自定义数组的pop和shift方法的更多相关文章
- jQuery实例—选项卡(js源码和jQuery)【一些常见方法(1)-练习】
分别利用javascript的源码和jQuery来实现一个简单的选项卡,对比各自的步骤. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...
- Underscore.js 源码学习笔记(下)
上接 Underscore.js 源码学习笔记(上) === 756 行开始 函数部分. var executeBound = function(sourceFunc, boundFunc, cont ...
- MVVM大比拼之avalon.js源码精析
简介 avalon是国内 司徒正美 写的MVVM框架,相比同类框架它的特点是: 使用 observe 模式,性能高. 将原始对象用object.defineProperty重写,不需要用户像用knoc ...
- basket.js 源码分析
basket.js 源码分析 一.前言 basket.js 可以用来加载js脚本并且保存到 LocalStorage 上,使我们可以更加精准地控制缓存,即使是在 http 缓存过期之后也可以使用.因此 ...
- vue.js源码精析
MVVM大比拼之vue.js源码精析 VUE 源码分析 简介 Vue 是 MVVM 框架中的新贵,如果我没记错的话作者应该毕业不久,现在在google.vue 如作者自己所说,在api设计上受到了很多 ...
- 从template到DOM(Vue.js源码角度看内部运行机制)
写在前面 这篇文章算是对最近写的一系列Vue.js源码的文章(https://github.com/answershuto/learnVue)的总结吧,在阅读源码的过程中也确实受益匪浅,希望自己的这些 ...
- Vue.js源码——事件机制
写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出.文章的原地址:https://github.com/an ...
- 从Vue.js源码角度再看数据绑定
写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出.文章的原地址:https://github.com/an ...
- js便签笔记(10) - 分享:json2.js源码解读笔记
1. 如何理解“json” 首先应该意识到,json是一种数据转换格式,既然是个“格式”,就是个抽象的东西.它不是js对象,也不是字符串,它只是一种格式,一种规定而已. 这个格式规定了如何将js对象转 ...
随机推荐
- Go package(3):io包介绍和使用
IO 操作的基本分类 在计算机中,处理文件和网络通讯等,都需要进行 IO 操作,IO 即是 input/ouput,计算机的输入输出操作. Go语言中的 IO 操作封装在如下几个包中: io 为 IO ...
- WebRTC下 的 NAT 穿透技术
NAT的概念模型 NAT名字很准确,网络地址转换,就是替换IP报文头部的地址信息.NAT通常部署在一个组织的网络出口位置,通过将内部网络IP地址替换为出口的IP地址提供公网可达性和上层协议的连接能力. ...
- CycleGAN
目录 概 主要内容 代码 Zhu J., Park T., Isola P. & Efros A. Unpaired Image-to-Image Translation using Cycl ...
- KKT (LICQ)
目录 基本内容 LICQ 假设 KKT 定理 KKT定理的证明 引理A Farkas 引理 推论 KKT定理的证明 H. E. Krogstad, TMA 4180 Optimeringsteori ...
- 【计理01组03号】Java基础知识
简单数据类型的取值范围 byte:8 位,1 字节,最大数据存储量是 255,数值范围是 −128 ~ 127. short:16 位,2 字节,最大数据存储量是 65536,数值范围是 −32768 ...
- Java初学者作业——编写Java程序,实现判断所输入字符的类型(数字、小写字母、大写字母或其他字符)
返回本章节 返回作业目录 需求说明: 编写Java程序,实现判断所输入字符的类型(数字.小写字母.大写字母或其他字符) 实现思路: 声明变量c,用于存储用户输入的字符. 通过Scanner接收用户输入 ...
- Drools集成SpringBootStarter
1.说明 基于fast-drools-spring-boot-starter, 能够方便的将规则引擎Drools集成到Spring Boot, 基于前面介绍过的文章Drools集成SpringBoot ...
- pod内执行kill -3 pid
1.使用logs命令监控输出 kubectl logs iothub2-iop-dm-replicaset-0 -n iot -f >> yuanqianqian.txt 2.在p ...
- Pytest_跳过用例的执行(7)
pytest跳过用例执行的用法与unittest跳过用例大致相同. pytest跳过用例的方法如下: pytest.mark.skip(reason):无条件用例.reason是跳过原因,下同. py ...
- LC 只出现一次的数字
Given a non-empty array of integers nums, every element appears twice except for one. Find that sing ...