今天遇到關於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.
以上就是小編為大家帶來的關於js原型的面試題講解的全部內容了,希望對大家有所幫助,多多支持~