javascript - 如何理解prototype和__proto__的區(qū)別呢?
問題描述
如何理解prototype和__proto__的區(qū)別呢?
問題解答
回答1:構(gòu)造函數(shù)訪問原型時,通常通過prototype來訪問,例如我們往原型上添加方法
Person.prototype.getName = function() {}
當new出來的實例訪問原型時,在一些支持的瀏覽器中
function Person() {}var p1 = new Person();p1.__proto__ === Person.prototype // true
結(jié)論:prototype是作為構(gòu)造函數(shù)去訪問原型,而__proto__是作為實例去訪問原型。當自身身份不一樣,即使一個方法同時調(diào)用兩者時,訪問到的可能是不同的原型。
回答2:每個對象都有__proto__,而prototype只有Function有;
回答3:也許你也可以看看這些:
/a/11...
https://developer.mozilla.org...
https://developer.mozilla.org...
回答4:prototype 是構(gòu)造函數(shù)的一個屬性,__proto__ 是實例的一個屬性。使用構(gòu)造函數(shù)生成的實例的 __proto__ 屬性會指向構(gòu)造函數(shù) prototype 屬性所指向的對象。
嗯,就是這樣。
回答5:從作用上來說:prototype 確定了當利用構(gòu)造器或字面量形式定義對象時 proto 的默認值
proto 是 js 引擎原型鏈搜索的依據(jù)
所以重點在于當你要更改原型鏈的搜索方式時,可以通過更改構(gòu)造器 prototype 來改變后續(xù)所有實例化對象的原型鏈查找方式,利用 proto 來修改單個對象的原型鏈查找.
相關(guān)文章:
1. 如何解決docker宿主機無法訪問容器中的服務(wù)?2. javascript - 如何使用nodejs 將.html 文件轉(zhuǎn)化成canvas3. angular.js - 輸入郵箱地址之后, 如何使其自動在末尾添加分號?4. 在mac下出現(xiàn)了兩個docker環(huán)境5. javascript - 后臺管理系統(tǒng)左側(cè)折疊導(dǎo)航欄數(shù)據(jù)較多,怎么樣直接通過搜索去定位到具體某一個菜單項位置,并展開當前菜單6. docker-compose中volumes的問題7. python - Scrapy存在內(nèi)存泄漏的問題。8. java如何生成token?9. angular.js - $stateChangeSuccess事件在狀態(tài)跳轉(zhuǎn)的時候不執(zhí)行?10. python - 啟動Eric6時報錯:’qscintilla_zh_CN’ could not be loaded
