javascript中的原型

202 阅读1分钟

原型


  • 生成对象时,默认生成了一个__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是函数的属性
    image.png
    image.png
    image.png
    image.png