温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
Hello,大家好,这个小节呢,我们来实现一下apply函数。Apply函数呢?它与Co函数的作用是一模一样的。都是呢,改变函数类似的指向,然后呢,执行函数返回结果。但是呢,Apply函数与Co函数还是有一个很明显的区别的。区别就在于函数运行时的一个参数。它的设定是一个数组。而Co呢?它的食材是以单独形式存在的。大家可以对比一下,这是card。这个呢是applied。那好,下边的话我们就开始来实现一下apply函数。还是一样,先把结构先搭出来。第一个参数是函数。第二个参数呢为this指向这个对象。第三个呢,是实参函数运行的实参。注意这里呢,就没有使用rest参数了。
01:03
而是直接就拿一个参数,普通参数来表示就可以了。那么里边的操作流程呢,跟call是非常非常相像的。首先我们先来去为obj添加临时的一个方法。OBj.tmp等于个FN。然后下边呢,执行函数。怎么来执行呢?OBj.tmp括弧。我这写成一个方法吧。参数这块我们要。把它调整一下。那么上一之前的话,咱们是点点点as。这次的话其实咱们也是用谁啊点点点as。啊,没有什么区别,为什么呢?因为你想一想,这个函数运行时,它呢,时参其实是分开的。而你传过来它是一个数组,比如说你十二十,你十二十,你把它直接放,这肯定是不行的。
02:04
所以我们要使用扩展运算符把它展开。哎,然后呢,在这。Result做一个结果的接收。然后删除临时属性。Delete OBj.tmp最后呢,返回结果。Return一下results。当然判断这块也是跟之前一样子。啊,如果。Obj。要是等于一个unDeFined。或者说。Obj等于一个那。那么obj。就等于一个谁呢?This。好了,完成。完成之后咱们来看看效果怎么样。点开浏览器。打开控制台。好看这。出来了,然后五百五十一一千三百八十四,注意啊,这是apply函数的。
03:02
那么咱们顺便再去看一看呢,它执行完函数之后,Obj它的一个表现。是不是还有那个tmp那个属性。好,然后呢,右键刷新一下,你可以看到是没有的。好,由此可证,我们apply函数的封装是没有问题的。好,到这儿的话,我们这个小节就先到这儿。
我来说两句