Javascript的數據類型分爲基本數據類型(String、Number、Boolean 、Undefined、Null、Symbol)和引用數據類型,除了基本數據類型外,剩下的都是對象,可是因爲js中沒有類(class 在ES6中引入了class,其實知識語法糖,本質仍是沒變),如何將這些對象聯繫起來,如何共享這些對象中的方法和屬性,因而就有了原型和原型鏈的概念。(其實就是怎麼能解決繼承的問題)html
英文單詞 prototype; 發音:['proʊtə.taɪp],是每一個函數中的一個私有屬性,這個屬性是個指針,指向了它的原型對象 prototype object;前端
函數a,經過打印a.prototype ,能夠打印出它的原型對象,可是經過構造函數B實例化出來的實例對象b,打印prototype屬性時候確是undefined函數
prototype object,每個對象都有一個原型對象學習
每一個實例對象都有一個私有屬性__proto__指向它的構造函數的原型對象(prototype object)。該原型對象內部也有一個私有屬性__proto__指向它的原型對象,這樣層層向上直到一個對象的原型對象爲null。null沒有原型對象,並做爲這個原型鏈中的最後一個環節。this
這樣就將它們聯繫起來了;es5
html:
function P(name,age){
this.name = name;
this.age = age;
}
const p = new P('Nichlas',18);
console.log(p.__proto__);
複製代碼
html:
const n = new Number(1);
console.log(n);
console.log(n.__proto__);
複製代碼