Object原型對象和Function原型對象

var Person = function() {};

Object.prototype.a = 'A'

Function.prototype.b = 'B'

var p = new Person();    
console.log(p.a);//A
console.log(p.b);//undefined

問爲什麼?

有不少同學第一眼看上去就覺得很疑惑,p不是應該繼承了Function原型裏面的屬性嗎,爲什麼p.b返回是undefined呢?

其實,只要仔細想一想就很容易明白了,Person函數纔是Function對象的一個實例,所以通過Person.a可以訪問到Function原型裏面的屬性,但是new Person()返回來的是一個對象,它是Object的一個實例,是沒有繼承Function的,所以無法訪問Function原型裏面的屬性。但是,由於在js裏面所有對象都是Object的實例,所以,Person函數可以訪問到Object原型裏面的
屬性,Person.b => 'b'。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章