//回调函数: 把一个函数当参数传给另个函数
    /*    function f1() {
            console.log('f1');
        }
        function f2(f) {
            f();
            console.log(1);
        }
        f2(f1);*/
    //arr.forEache
    //1.回调函数: 执行5次
    //2.回调函数参数: item,index,arr
    var arr = [11, 22, 33, 44, 55];
    /*arr.forEach(function (i) {
        console.log(arguments);//3个参数[11, 0, Array(5)].
        console.log(i);
    });
    console.log('ok2');*/
    //自己传参
    /*arr.forEach(function (item,index,input) {
        console.log(item);
    });*/
    //forEach的特点
    //1.不返回值
    //2.不修改原来数组
    //但是可以手动修改
    /*var res = arr.forEach(function (item, index, input) {
        input[index] = item * 10;
        console.log(input);
    });
    console.log(arr);
    console.log(res);
*/
    //arr.map 1,克隆一份原arr 2,对克隆的进行修改
    /*   var res = arr.map(function (item, index, input) {
           return item * 10;  //return什么,就相当于修改当前item为啥
       });
       console.log(arr);
       console.log(res);*/
    //匿名函数中this是window
    var obj = {'name': 'maotai'};
    /*arr.forEach(function (item, index) {
        console.log(obj);
    }).call(obj);*/
    //forEach中的this是arr
    //匿名函数中的this是window
    /* arr.forEach(function (item, index) {
         console.log(obj);
     }, obj); //第二个参数意思是将匿名函数中this改为obj(默认window)*/
    //sort不支持传参改变匿名函数this指向
    /*arr.sort(function () {
        console.log(this);
    });*/
    //定时器不支持改变this, 是改变时间的
    /*  setTimeout(function () {
      },2000)*/
    //replace不支持传参改变匿名函数this指向
    /* 'maotai'.replace(/\w/g, function () {
         console.log(this);
     })*/
    //对于不支持第二个参数的,使用bind来改变
    'maotai'.replace(/\w/g, function () {
        console.log(this);
    }.bind(obj));