javascript - 如何理解prototype和__proto__的區(qū)別呢?
問題描述
如何理解prototype和__proto__的區(qū)別呢?
問題解答
回答1:構(gòu)造函數(shù)訪問原型時(shí),通常通過prototype來訪問,例如我們往原型上添加方法
Person.prototype.getName = function() {}
當(dāng)new出來的實(shí)例訪問原型時(shí),在一些支持的瀏覽器中
function Person() {}var p1 = new Person();p1.__proto__ === Person.prototype // true
結(jié)論:prototype是作為構(gòu)造函數(shù)去訪問原型,而__proto__是作為實(shí)例去訪問原型。當(dāng)自身身份不一樣,即使一個(gè)方法同時(shí)調(diào)用兩者時(shí),訪問到的可能是不同的原型。
回答2:每個(gè)對(duì)象都有__proto__,而prototype只有Function有;
回答3:也許你也可以看看這些:
/a/11...
https://developer.mozilla.org...
https://developer.mozilla.org...
回答4:prototype 是構(gòu)造函數(shù)的一個(gè)屬性,__proto__ 是實(shí)例的一個(gè)屬性。使用構(gòu)造函數(shù)生成的實(shí)例的 __proto__ 屬性會(huì)指向構(gòu)造函數(shù) prototype 屬性所指向的對(duì)象。
嗯,就是這樣。
回答5:從作用上來說:prototype 確定了當(dāng)利用構(gòu)造器或字面量形式定義對(duì)象時(shí) proto 的默認(rèn)值
proto 是 js 引擎原型鏈搜索的依據(jù)
所以重點(diǎn)在于當(dāng)你要更改原型鏈的搜索方式時(shí),可以通過更改構(gòu)造器 prototype 來改變后續(xù)所有實(shí)例化對(duì)象的原型鏈查找方式,利用 proto 來修改單個(gè)對(duì)象的原型鏈查找.
相關(guān)文章:
1. javascript - node.js promise沒用2. golang - 用IDE看docker源碼時(shí)的小問題3. yii2中restful配置好后在nginx下報(bào)404錯(cuò)誤4. 算法 - python 給定一個(gè)正整數(shù)a和一個(gè)包含任意個(gè)正整數(shù)的 列表 b,求所有<=a 的加法組合5. android 如何實(shí)現(xiàn)如圖中的鍵盤上的公式及edittext的內(nèi)容展示呢6. java - 我在用Struts2上傳文件時(shí),報(bào)以下錯(cuò)誤怎么回事?7. c++ - 如何正確的使用QWebEngineView?8. PHP注冊(cè)功能9. mysql - 求SQL語句10. MySQL如何實(shí)現(xiàn)表中再嵌套一個(gè)表?
