首页 > Web开发 > 详细

js原型和原型链

时间:2019-12-20 13:42:15      阅读:115      评论:0      收藏:0      [点我收藏+]

https://www.jianshu.com/p/f30fa27999e3

https://blog.csdn.net/yx_back/article/details/91470917

https://blog.csdn.net/yx_back/article/details/91470917

http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html

说明:这篇文章我就是根据自己的理解,零散的写写重要的东西,要想看系统的请移步上面的链接,我觉得几位作者写的都很详细,我懒得总结,就是随便记一下。不喜勿喷!

原型:

技术分享图片

构造函数是什么?构造函数与其他函数唯一的区别在于调用方式不同。任何函数只要通过new来调用就可以作为构造函数,它是用来创建特定类型的对象。

new出来的实例对象此时已经和构造再无联系了!也就是说每一个new出来的实例都有自己的属性和方法的副本,是独立的的!修改其中一个不会影响另一个!

技术分享图片

 

每一个构造函数都设置一个prototype属性,这个属性就指向原型对象即Function.prototype,原型对象又有一个constructor构造器,这个构造器指向构造函数。原型对象里面存放着所有实例对象需要共享的属性和方法!所以,我们把需要共享的放到原型对象里,把那些不需要共享的属性和方法存在在构造函数里!

 

原型链:

技术分享图片

 
这里test2就是共享方法,放在了原型对象里。

实例对象找方法,先从自身找,找不到的话就顺着原型链去原型对象找。

例子:

技术分享图片

 

 

JavaScript中的对象,都有一个内置属性[Prototype],指向这个对象的原型对象。当查找一个属性或方法时,如果在当前对象中找不到,会继续在当前对象的原型对象中查找;如果原型对象中依然没有找到,会继续在原型对象的原型中查找(原型也是对象,也有它自己的原型);直到找到为止,或者查找到最顶层的原型对象中也没有找到,就结束查找,返回undefined。这个查找过程是一个链式的查找,每个对象都有一个到它自身原型对象的链接,这些链接组建的整个链条就是原型链。拥有相同原型的多个对象,他们的共同特征正是通过这种查找模式体现出来的。
在上面的查找过程,我们提到了最顶层的原型对象,这个对象就是Object.prototype,这个对象中保存了最常用的方法,如toString、valueOf、hasOwnProperty等,因此我们才能在任何对象中使用这些方法。

 
技术分享图片

 

 

大致总结一下就是:

1、Object是作为众多new出来的实例的基类 function Object(){ [ native code ] }

2、Function是作为众多function出来的函数的基类 function Function(){ [ native code ] }

3、构造函数的proto(包括Function.prototype和Object.prototype)都指向Function.prototype

4、原型对象的proto都指向Object.prototype

5、Object.prototype.proto指向null

js原型和原型链

原文:https://www.cnblogs.com/lyt0207/p/12030872.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!