首页 > Web开发 > 详细

JS的原型

时间:2021-06-29 14:58:39      阅读:19      评论:0      收藏:0      [点我收藏+]

 

 js默认会通过__proto__和prototype形成一条原型链,对象的属性和方法的查找会通过这原型链一直查到object;

 

一、js中的对象 

1、对应java中的类

js中没有类的概念,但是有函数的概念,所以可以直接定义一个函数,并把它作为构造函数,由于new关键字就是new构造函数的,所以我们也可以用new关键字来实例一个js函数的对象出来;

2、对应java中的成员变量和成员方法

但是类中是有成员变量和成员方法的,我们在js的构造函数中无法再添加一个函数作为成员方法,那怎么办?

我们给构造函数添加一个属性叫prototype,在这个属性上,我们再去给它添加变量和函数,并且初始化一个构造函数的实例的时候,会自动把这个prototype属性上的变量和函数变成实例可以调用的属性和方法;

3、_ _protto_ _是干什么的?

刚刚我们说了,初始化一个构造函数的实例时,prototype上的变量和函数会自动变成实例的属性和方法,这个是怎么做到的呢?

其实就是靠的_ _protto_ _;

当js的实例想调用属性和方法时,它会去_ _protto_ _查找,而实例的_ _protto_ _指向的就是父类的prototype属性,或者说指向的就是构造函数的prototype属性;

如果你访问的属性在父类.prototype也不存在,那又会继续往父类.prototype.__proto__上找,这时候其实就找到了Object了,Object再往上找就没有了,也就是null,这其实就是原型链

 

prototype是函数的属性,不是对象的, 对象拥有的是__proto__,是用来查找prototype的。

 

4、什么是构造函数的prototype.constructor属性?

构造函数的prototype.constructor属性就还是构造函数它本身,并且修改构造函数的prototype.constructor属性到其他函数并没用,它始终执行构造函数本身;

5、图解上述关系

技术分享图片

 

 

 

二、静态方法

技术分享图片

 

三、继承

对象拥有的是__proto__,是用来查找prototype的。

实例对象的__proto__查找的是类的prototype属性;

prototype对象的__proto__查找的是父级prototype;

 

js默认会通过__proto__和prototype形成一条原型链,对象的属性和方法的查找会通过这原型链一直查到object;

技术分享图片

 

 

 

参考:

https://mp.weixin.qq.com/s?__biz=MzAxODE4MTEzMA==&mid=2650090630&idx=1&sn=4022a5f5011366d3f6d06008d3340cf2&chksm=83dbb1e3b4ac38f5cd4be3fdb5208502d9a40136ab4c1f2e0162415a0bc4a583c94448480934&mpshare=1&scene=1&srcid=06299qMuMqTsvNSq8ctXEGYJ&sharer_sharetime=1624938761452&sharer_shareid=8ccb4c953286a0933eebdd160318031d&key=11d155784951b2b247eb8020e4212c63143ef87dd1c623bf9e6c1f9652529b5602fb7e68aa24074d44d28179d8f67668eebe4e3669b6c4c253874de91bcb8aaee6a34b8fdc07f401b537e6068c80b5308e21089eaafdc42ca59aacc833a4a6b746a9432db4eee5517e4d73d80fa9d6ffe8e4b1d164a8e5ac72ffb27875cd683c&ascene=1&uin=MzYzNDY0MDI3OA%3D%3D&devicetype=Windows+10+x64&version=62090529&lang=zh_CN&exportkey=A1f4zSHBNwcTrtTB9zXxUXA%3D&pass_ticket=2Ne2l%2FVDxdb5FjuRKqILdlV4mlLBe99PqlJVICgjcDr8V5XqaM8uz5p%2BVfYSzGVL&wx_header=0

 

JS的原型

原文:https://www.cnblogs.com/EricShen/p/14949605.html

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