原型
- 生成对象时,默认生成了一个
__proto__
的地址,指向堆内存js自建的所有对象公用的prototype
(浏览器一打开就生成好了) ,当你的私有属性调用所有对象公用的方法时,会去堆内存中找到prototype
中需要的方法并返回你缩调用的值,所以obj1.toString===obj2.toString
- 如果要调用比如Number的
toFixed
方法,一般对象是没有这个方法的,所以在公共对象的prototype
是没有这个方法的,js的做法是在把Number的特殊方法比如(toFixed
)先放在堆内存中的一个__proto__
中,再在__proto__
中生成__proto__
指向所有对象公用的__proto__
,如果我们要调用所有对象公用的protype
,就相当于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
函数.__proto__=function.prototype
Function.prototype===Function.__proto__
函数的__proto __指向自己的prototype !!!
-
对象.__proto__===函数.prototype
深入理解__proto __是对象的属性,prototype是函数的属性