map
Array.prototype.map = function (callbackFn, Arg) {
// 异常处理
if (this === null) throw new TypeError("Cannot read perproty 'map' of null");
if (this === undefined) throw new TypeError("Cannot read perproty 'map' of undefined");
// 回调类型异常
if (Object.prototype.toString.call(callbackFn) != '[object Function]') {
throw new Error(`${callbackFn} is not a function`);
}
let Obj = Object(this);
let len = Obj.length >>> 0;
let A = new Array(len);
for (let i = 0; i < len; i++) {
if (i in Obj) {
let value = Obj[i];
let ele = callbackFn.call(Arg, value, i, Obj);
A[i] = ele;
}
}
return A;
}
var arr = [1, 2, 3, 4];
var newArr = arr.map((item, index) => {
return item * item;
})
console.log(newArr); // [1, 4, 9, 16]