研究一下apply和call和bind方法

一、是用来干什么的?数组

改变this指向!!!app

二、是什么?this

是一个方法,function原型链上的方法prototype

记住是某方法的call方法和apply方法3d

 三、怎么用?对象

 

 强行把a方法的this指向为call方法的第一个参数对象。blog

那后面的参数是干吗的?是传给调用call,apply方法的那个方法!继承

apply方法的区别?  答:就是后面的参数要写成数组的形式原型链

 

 四、具体的应用?字符串

1、数组拼接

方法1:cancat

arr1=arr1.cancat(arr2);

方法2:push+...扩展运算符

arr1.push(...arr2);

方法3:push+apply

arr1.push.apply(arr1,arr2);

或者 [].push,apply(arr1,arr2);

或者 Array.prototype.push.apply(arr1,arr2)

只要能找到push方法就能够,由于最后咱们都要将this指向转化为arr1

为何使用apply,不使用call,由于这里恰好是arr2是一个数组,符合要求,更方便。

2、判断类型

object.prototype.tostring(arr1);

首先找到tostring方法,而后改变他的指向到要检测的东西

3、找出最大值和最小值

方法是math,max()和math,min()

可是这个方法接收的是以,形式传入的,而不是数组

因此调用apply方法,就能够传数组了

Math.max.apply(null,arr1)

最小值相似

4、伪数组的转换

slice方法

参数(start,end)

若是参数为空,则所有截取,至关于(0)

一个参数,则从参数的地方开始到结尾处,参数为下标

返回一个新数组

 5、构造继承

让B继承于A,最好的方法就是让A在B中运行一遍

可是考虑到可能A中可能有this指向,到B中运行时就可能致使运行时this指向不对,因此使用apply,或者call方法

 6、字符串的拆解,中间用‘ ,’号分开

方法一:先用split()方法拆解,,再用join()方法链接起来

 split() 方法用于把一个字符串分割成字符串数组。

若是把空字符串 ("") 用做 参数,那么 stringObject 中的每一个字符之间都会被分割。

join() 方法用于把数组中的全部元素放入一个字符串。

参数,就是分隔符,不写参数默认用‘  ,’号分隔。

方法二:call()

 

 七八:

 

 第七种,没听懂,没多大用

第八种,了解,用途:兼容严格模式

相关文章
相关标签/搜索