研究一下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()

 

 七八:

 

 第七種,沒聽懂,沒多大用

第八種,瞭解,用途:兼容嚴格模式

相關文章
相關標籤/搜索