關於Function原型對象和Object原型對象的一些疑惑


網上有一道美團外賣的面試題是這樣的:

Function.prototype.a = 'a'; Object.prototype.b = 'b'; function Person(){}; var p = new Person(); console.log('p.a: '+ p.a); // p.a: undefined console.log('p.b: '+ p.b); // p.b: b


問為什么?

有不少同學第一眼看上去就覺得很疑惑,p不是應該繼承了Function原型里面的屬性嗎,為什么p.a返回值是undefined呢?
其實,只要仔細想一想就很容易明白了,Person函數才是Function對象的一個實例,所以通過Person.a可以訪問到Function
原型里面的屬性,但是new Person()返回來的是一個對象,它是Object的一個實例,是沒有繼承Function的,所以無法訪問
Function原型里面的屬性。但是,由於在js里面所有對象都是Object的實例,所以,Person函數可以訪問到Object原型里面的
屬性,Person.b => 'b'

 

 


免責聲明!

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



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