js学习第18天

apply,call,bind的异同?

     1.都是用来改变函数的this指向

    2.bind用来改变匿名函数(事件体)

    3.apply和call通常用来改变有名函数的this指向

    4.apply的第二个参数为数组,call按顺序填写

    5.bind没有直接调用函数,等价于创建了一个新的函数对象

   核心思想,如何改变eat方法中的this指向?

               apply和call都是用来改变函数对象this指向的函数

               函数对象.apply(被修改的this指向,[函数对象参数1,参数2...])

               函数对象.call(被修改的this指向,函数对象参数1,函数对象参数2...);

递归

递归:一个函数直接或者间接的调用自己本身

递归的本质就是函数的嵌套调用

作用:将长代码变短,去掉代码冗余

arguments.callee:代表当前的函数对象本身

柯里化函数

柯里化函数:一个包含一个参数返回一个函数的函数

 作用:

           1:柯里化实际是把简单的问题复杂化了,但是在复杂化的同时,我们在使用函数时拥有了更加多的自由度

            2: 而这里对于函数参数的自由处理,正是柯里化的核心所在。柯里化本质上是降低了通用性,提高了适用性

例:

    // 柯里化函数
  function checkReg(reg){
      return function(str){
          return reg.test(str)
      }
  }
// 生成工具函数,判断用户名
let f1 = checkReg(/^\w{6,18}$/)
console.log(f1("heihei"))

  //生成工具函数,判断密码
  let f2 = checkReg(/^.{6,}$/);
    console.log(f2("123"));
    console.log(f2("helloworld"));

prototype   原型

核心问题:行为方法不应该属于每一个实例对象,他们应该属于整个类族,且只有一份

原型对象:原型对象是函数对象(构造函数)的一个属性,他是用来保存所有实例对象共享的属性和方法的

为什么实例化对象可以访问所有的属性和方法?

             实例化对象可以直接访问new出来的属性,每个实例化对象都有一个__proto__的属性,该属性指向类的原型对象,所以实例化对象可以访问原型对象上的属性或者方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值