一篇有关新 js 特性 at 方法的思考

  • 入参只能是number 类型,允许入参有小数(按照 chrome DevTools Console 测试确实可以带小数)
  • 有返回值,如果对应下标在实例中存在,则返回对应的 value,如果不存在,返回 undefined
  • at 可以用在 Array 或者 String 实例上
  • polyfill 实现

polyfill started (ES3)

function at(arg){
// 因为入参允许存在小数点情况,这里需要处理掉小数点
var idx = Math.trunc(arg) || 0;
// 在ES3、ES5 中没有 at 的特性支持,需要通过 js 手动实现 at 入参为负数的特性
// 因此用实例 length + 入参下标计算出结果
if (idx < 0) { idx += this.length };
// 根据下标读取数值包头不包尾的原则,处理传入参数经过计算后还是有 `下标越界` 这种情况时,返回 undefined
if (idx < 0 || idx >= this.length) { return undefined };
// 此时 idx 为正整数,直接用 idx 读取下标值并返回
return this[idx]
}
// 向原型链注入特性
String.prototype.at = at;
Array.prototype.at = at

最新文章

  1. Windows Store App JavaScript 开发:选取文件和文件夹
  2. OAF_开发系列29_实现OAF中批次处理迭代器RowSet/RowSetIterator(案例)
  3. [ZigBee] 11、ZigBee之睡眠定时器二
  4. Swift_3.0_取消杂乱无章的log输出
  5. 开机自动播放音乐的vbs
  6. 使用imp加载python模块
  7. MMU、Icache、Dcache
  8. c#将金额转换为大写,支持小数点,原创经典
  9. 练习2 D 题- 第几天?
  10. 使用mitmproxy嗅探双向认证ssl链接——嗅探AWS IoT SDK的mqtts
  11. python基础——继承与派生、组合
  12. springboot2 webflux 响应式编程学习路径
  13. Luogu2398 GCD SUM
  14. SNMP扫描
  15. day 10 - 1 函数进阶
  16. poj1734 Sightseeing trip【最小环】
  17. centos6.5新增加硬盘挂载并实现开机自动挂载
  18. HGOI 20181103 题解
  19. SQL:显示每天的小计,某一天没有记录也要显示
  20. Android_读取元素的数据

热门文章

  1. 探测域名解析依赖关系(运行问题解决No module named &#39;DNS&#39;)
  2. flowable初体验踩坑及概述
  3. CentOS7 使用Mariadb 安装 hive
  4. GFF2GTF.py2
  5. java获取类内容
  6. ubuntu 16.04 安装VNC远程桌面 安装wine+hfs
  7. loadrunner添加/清除 cookies
  8. STM32上特殊管脚应用 重映射那个GPIO_Remap_SWJ_JTAGDisable
  9. angularJS:一个页面多个ng-app
  10. spring boot 上传文件大小超出限制