函数的方法

函数的创建

函数声明

        function fn() {} //直接声明一个函数 可以被提升

函数定义

      var fm = function () {}; //不会提升函数 必须定义完才可以使用

      var obj = {

        fn1: function () {},

      };

函数自调用 只要不让function开头 都可以执行自调用 前面可以是+ - !各种符号

      (function fn2() {

        console.log(111);

      })(); //111

      //   fn2(); 会报错 不能找到自调用的函数 自调用函数调用完立即销毁

new 调用函数(new 调用返回值为它创建的地址空间this)

 

      var a = 100;

      function fn4() {

        console.log(a);

        console.log(this.a);

      }

      var n1 = fn4();

      var n2 = new fn4(); //括号可以去掉

      console.log(n1, n2); //100 100 100 undefined undefined fn4{}

函数的方法

call && apply 调用函数并修改函数this指向 

     function fn() {

        console.log(arguments);

        console.log(this.name);

      }

      var obj1 = {

          name: "张三",

        },

        obj2 = {

          name: "李四",

        };

      fn.call(obj1); //张三

      fn.call(obj2); //李四

      fn.apply(obj1); //张三

      fn.apply(obj2); //李四

      call && apply区别

      1.call方法可以传入多个实参并函数可以接收

      2.apply方法只可以传入两个参数 第二个参数必须是引用数据类型 被解析后赋值给每一个形参 可以用数组将多个值存入

      fn.call(obj1, 1, 2, 3, 5); //[1,2,3,5,]

      fn.apply(obj1, [1, 2, 3, 5]); //[1,2,3,5,]

apply的应用

      var arr = [12, 151, 61, 1545];

      console.log(Math.max(12, 151, 61, 1545)); //只能这样用

      console.log(Math.max(arr)); //NAN

      console.log(Math.max.apply(null, arr)); //1545 第一个参数是this指向 可以直接为null不用管 apply会将第二个引用数据类型的参数进行解析

bind 返回值新函数 长得一样 给新函数绑定好this指向

 

     var obj = {

        name: 1,

      };

      function fnn() {

        console.log(this);

      }

      var newfnn = fnn.bind(obj);

      fnn(); //window

      newfnn(); //{name:1}

      var obj1 = {

        name: 2,

        newfnn: newfnn,

      };

      obj1.newfnn(); //{name:1} 绑定后函数的this值就不会改变了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思考猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值