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对象转 ...
随机推荐
- 简单的 for 循环也会踩的坑
前言 最近实现某个业务时,需要读取数据然后再异步处理:在 Go 中实现起来自然就比较简单,伪代码如下: list := []*Demo{{"a"}, {"b"} ...
- HDU 1052:Tian Ji -- The Horse Racing(贪心)
Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- 遍历 HashMap 的 5 种最佳方式
使用 Iterator 遍历 HashMap EntrySet 使用 Iterator 遍历 HashMap KeySet 使用 For-each 循环迭代 HashMap 使用 Lambda 表达式 ...
- 「算法笔记」期望 DP 入门
一.数学期望 1. 由来 在 \(17\) 世纪,有一个赌徒向法国著名数学家帕斯卡挑战,给他出了一道题目:甲乙两个人赌博,他们两人获胜的机率相等,比赛规则是先胜三局者为赢家,一共进行五局,赢家可以获得 ...
- [c++]对vector<T>容器求交集,并集,去重
#include "iostream" #include "vector" #include "algorithm" //sort函数.交并 ...
- MySQL8.0.20安装详解
https://blog.csdn.net/yeb112233/article/details/106042867/ alter user root@localhost identified by ' ...
- Log4j2基本使用入门
1.Log4j2简介 Apache Log4j 2是日志框架Log4j的升级, 它比其前身Log4j 1.x提供了重要的改进, 并且参考了Logback中许多有用的改进, 同时修复了Logback的一 ...
- RSA非对称加密算法实现:Golang
RSA是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.当时他们三人都在麻省理工学院工作.RSA ...
- Selenium_单选框和复选框的选中状态判定以及元素是否可用和可见判定(10)
简单写个单选框和复选框界面 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /&g ...
- js字符串首字母大写的不同写法
写法一: let name = 'hello' name.charAt(0).toUpperCase() + name.slice(1) 写法二: let name = 'hello' name.sl ...