接收两个参数,一个是回调函数,一个是回调函数的this指向;
// 1、普通数组 用例一 ----------------------------------------------------------------------
const array = [1, 2, 3, 4]
const obj = { name: 'tom' }
const temp = array.map(function(el, index, arr){ // 当前对象, 索引, 总数组对象
console.log(this) // obj
console.log(this.name) // tom
return el + this.name
}, obj)
console.log(temp) // ["1tom", "2tom", "3tom", "4tom"]
console.log(array) // [1,2,3,4] 原普通数组不变
///2、对象数组 用例二 ----------------------------------------------------------------------
const array = [{name: 'tom', age: '12'}]
const temp = array.map(el => { // 当前对象, 索引, 总数组对象
el.name = 'jack'
el.age = '20'
console.log(this) // window
return el
})
console.log(temp) // [{name: "jack", age: "20"}]
console.log(array) // [{name: "jack", age: "20"}] 原对象数组改变
注意点:
1、不改变原普通数组,但可以改变原对象数组(与引用数据类型的存储方式:“地址引用”有关);
2、使用箭头函数时this指向不是传入的第二个参数;
3、每个元素可以自由返回不同类型的数据,但数组总长度不会变。