作為一名前端小白粥鞋,就要開始了自己的第一篇文章了缘挽,心里也是小小的激動,同時也是為自己以后前端路上的成長鋪好基石呻粹。好了壕曼,廢話不多說,在之前的面試中等浊,時常會被問到關(guān)于call與apply的區(qū)別腮郊,盡管面試前做足了準(zhǔn)備,可是被問到了還是一臉懵逼筹燕,所以今天特地網(wǎng)上看了一些文章來做個總結(jié)轧飞。
call與apply的區(qū)別:
obj.call(thisobj,...num1,num2);
obj.apply(thisobj,[num1,num2,...]);
以上兩行代碼作用實際上都是一樣的,都是讓thisobj具有obj的屬性和方法庄萎,唯一的不同點就是call后面所跟的參數(shù)主要是連續(xù)參數(shù)踪少,而apply后面所跟的參數(shù)主要是以數(shù)組形式來進行呈現(xiàn)的;
實際上說了那么多糠涛,相信大家應(yīng)該也明白了援奢,實際上就是關(guān)于繼承的問題了;
舉個例子詳細說明:
var obj={0:1,1:'hy',2:25}忍捡;
obj.slice();? ? ?//顯然這里是會報錯的集漾,因為slice的方法是數(shù)組所擁有的
那么我們就考慮通過使obj來具有數(shù)組的屬性和方法
Array.prototype.slice.call(obj);
console.log(obj);
以上自然也就可以打印出結(jié)果了
最后說一點關(guān)于bind的方法使用
bind同樣也是可以實現(xiàn)繼承的,具體代碼如下
obj.bind(thisobj,...num1,num2)();
記住后面一定要添加括號砸脊,否則一定會報錯具篇;
面試過程中延伸提問,您還了解其他的繼承方式嗎凌埂?關(guān)于閉包驱显,原型,原型鏈您了解嗎?
以上所說不做詳細闡述埃疫,自己上網(wǎng)看文檔伏恐,我也要看文檔,哈哈
推薦https://www.cnblogs.com/chenweizhen/p/6421564.html轉(zhuǎn)載自臻爺爺