原型
- 生成對象時蝇完,默認(rèn)生成了一個
__proto__
的地址,指向堆內(nèi)存js自建的所有對象公用的prototype
(瀏覽器一打開就生成好了) ,當(dāng)你的私有屬性調(diào)用所有對象公用的方法時机杜,會去堆內(nèi)存中找到prototype
中需要的方法并返回你縮調(diào)用的值,所以obj1.toString===obj2.toString
- 如果要調(diào)用比如Number的
toFixed
方法,一般對象是沒有這個方法的,所以在公共對象的prototype
是沒有這個方法的旷祸,js的做法是在把Number的特殊方法比如(toFixed
)先放在堆內(nèi)存中的一個__proto__
中,再在__proto__
中生成__proto__
指向所有對象公用的__proto__
讼昆,如果我們要調(diào)用所有對象公用的protype
托享,就相當(dāng)于js去找了2層 -
object
的共有屬性(原型)就是object.protetype
-
protetype
是瀏覽器建立好的公用屬性(原型),__proto__
是protetype
的引用
var a=new String("b") a.__proto__===string.prototype
a.__proto__.__proto__===string.prototype.__proto__===object.prototype
函數(shù).__proto__=function.prototype
Function.prototype===Function.__proto__
函數(shù)的__proto __指向自己的prototype !!!
-
對象.__proto__===函數(shù).prototype
深入理解__proto __是對象的屬性,prototype是函數(shù)的屬性
image.png
image.png
image.png