關於js原型的面試題


今天遇到關於javascript原型的一道面試題,現分析下:

原題如下:

    function A(){

    }

    function B(a){

      this.a = a;

    }

    function C(a){

      if(a){

        this.a = a;

      }

    }

    A.prototype.a = 1;

    B.prototype.a = 1;

    C.prototype.a = 1;

 

    console.log(new A().a);

    console.log(new B().a);

    console.log(new C(2).a);

 

分析:

console.log(new A().a);  //new A()為構造函數創建的對象,本身沒有a屬性,所以向它的原型去找,發現原型的a屬性的屬性值為1,故該輸出值為1;

 

console.log(new B().a);  //new B()為構造函數創建的對象,該構造函數有參數a,但該對象沒有傳參,故該輸出值為undefined;

 

console.log(new C(2).a);  //new C()為構造函數創建的對象,該構造函數有參數a,且傳的實參為2,執行函數內部,發現if為真,執行this.a = 2,故屬性a的值為2;

 

故這三個的輸出值分別為:1、undefined、2.  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM