1. 程式人生 > 其它 >js高階_原型鏈面試題

js高階_原型鏈面試題

面試題1

例項的__proto__屬性是例項被建立時賦予的,這個屬性指向的是例項被建立時建構函式的prototype物件

  function A(){
           }
           
           A.prototype.n=1;
           
           var b=new A();
           
           A.prototype={
           	n:2,
           	m:3
           }
           
           var c=new A();
           console.log(b.n+","+b.m+","+c.n+","+c.m);//1  undefind 2   3

2面試題

只要是物件呼叫方法,都是通過該物件的原型屬性'_ prototype _',去往原型物件找,原型物件找不到再去原型的額原型找,直到原型鏈盡頭

function  F(){
         	
         }
         
         Object.prototype.a=function(){
         	console.log('a');
         }
         
         Function.prototype.b=function(){
         	console.log("b");
         }
         
         var f=new F();
         
         f.a();
         //f.b();//報錯
         F.a();//大寫F說明把F函式當作一個物件,用它的proto屬性去原型裡面找,
         F.b();

上面的f.b()報錯的原因:

b方法是放在Function的原型物件裡的,用例項f去呼叫首先它跟著自己的隱式原型一個一個找,最後到null也沒有找到,也就是沒有相交的部分,所以就報錯。

F.a();

將F函式當成物件,用物件的隱式原型proto屬性去找,能找到。

F.b();