1、Js的原型和原型鏈怎么理解?原型鏈有什么應用?
答:js原型以及原型鏈是js面向對象編程的基礎和重點,這個也是筆試和面試常問到的問題。
每一個構造函數都有一個屬性prototype,這個屬性他指向就是我們常說的構造函數的原型。每當我們通過構造函數要去new一個實例的時候,new操作符會做些事情,其中有個操作就是會把構造函數的屬性和方法掛在實例的this上。每個對象都有_proto_這個屬性,當一個實例去找一個方法或屬性的時候,首先在自身上找,如果找不到會通過proto向原型上找,這樣一層一層向上的關系,我們稱之為原型鏈。原型鏈的最重要的作用就是實現了繼承。
2、你對call 和apply怎么理解?
答:這個問題幾乎是js筆試必出的題目,這兩個方法其實還是挺簡單的,要掌握的。
call和apply可以用來重新定義函數的執行環境,也就是改變this的指向。
call 和apply的區別在於:call接的參數是固定的,按照順序輸入。apply接收的參數是一個數組或者偽數組。
3、繼承有哪些方式?你的項目上有應用過繼承嗎?
答:繼承的方式很多種,每種的叫法可能有些差別,所以大家在記得時候一是只需記幾個常用的,二是你記得這幾個方式要能舉出一個例子來
1)原型鏈繼承
2)構造函數繼承,用call和apply來實現
3)混合方式,混合了call方式、原型鏈方式。
4)......
關於項目上是否有用過這個問題,一般我們建議這樣回答:因為公司開發更過的是考慮效率的,所以我們都是用的庫、框架、插件。因為這些都是經過驗證的能更好的應用到項目上而不會出現問題的而且開發效率高。所以我們項目上很少使用的,但是這些庫或者插件的封裝肯定是用到繼承的,所以變向的是用到的了。
更多學習資料可關注:annalin1203獲取