本文共 922 字,大约阅读时间需要 3 分钟。
注意:下面所说的回调函数,非箭头函数!!!
const obj = { name: 'ha', age: 12}const arr = [1, 3, , 4];// 原生mapconst newArr = arr.map(function (ele, index, arr) { console.log(this); return ele + 2; }, obj);console.log(newArr);
结果如下:
上面这个图,也能说明跳过了空项,因为this只输出了三遍!!!// 我的map方法Array.prototype.myMap = function (callback, context) { // context参数就是用来改变回调函数内部this的 var newArr = []; for (var i = 0; i < this.length; i++) { // 简单处理空项 this[i] ? newArr.push(callback.call(context, this[i], i, this)) : newArr.push(this[i]); } return newArr;}const newArr2 = arr.myMap(function (ele, index) { console.log(this); return ele + 2; }, /\w/g) // 用正则,尝试改变回调函数的内部thisconsole.log(newArr2);
结果如下:
转载地址:http://nwxhn.baihongyu.com/