ptototype和__proto__區別
//a作為構造函數時的prototype屬性與a作為普通函數時的__proto__屬性并不相等 console.log(a.prototype == a.__proto__);//false console.log(a.__proto__); //function (){} console.log(a.__proto__ == Function.prototype);//true //a作為一個普通函數調用時,它的構造函數是內置對象Function,所以它指向的原型對象,就是Function.prototype. //其實這個和console.log(b.__proto__ == a.prototype)是一樣的道理 //a作為構造函數時,它的原型,和它的原型的原型 console.log(a.prototype); //a{} console.log(a.prototype.__proto__); //Object{} //a作為普通函數時,它原型的原型 console.log(a.__proto__.__proto__); //Object{} console.log(a.__proto__.__proto__ == a.prototype.__proto__); //true
所有對象都有__proto__屬性,函數這個特殊對象除了具有__proto__屬性,還有特有的原型屬性prototype。prototype對象默認有兩個屬性,constructor屬性和__proto__屬性。prototype屬性可以給函數和對象添加可共享(繼承)的方法、屬性,而__proto__是查找某函數或對象的原型鏈方式。constructor,這個屬性包含了一個指針,指回原構造函數。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com