一篇有关新 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
标签:下标,String,idx,length,Array,prototype
From: https://www.cnblogs.com/PeiQi1229/p/16865084.html