JS 中的 __proto__ 、prototype、constructor
2018-12-27 07:42:30来源:博客园 阅读 ()
首先 先解释这三个属性:
(1) prototype : 它是函数独有的,从一个函数指向一个对象(函数的原型),含义是函数的原型对象,也就是这个函数所创建的实例的原型对象。(普通函数的该属性没有作用)
作用:让每一个实例共享同一套方法。
(2) __proto__ : 它是对象独有的,从一个对象指向一个对象。(即指向他们的原型对象,可以理解为父对象)
作用:当访问一个对象的属性时,如果该对象内部不存在这个属性,那么就会去它的__proto__属性所指向的那个对象(可以理解为父对象)里找,如果父对象也不存在这个属性,则继续往父对象的__proto__属性所指向的那个对象(可以理解为爷爷对象)里找,如果还没找到,则继续往上找….直到原型链顶端null(可以理解为原始人。。。),此时若还没找到,则返回undefined(可以理解为,再往上就已经不是“人”的范畴了,找不到了,到此为止)。由以上这种通过__proto__
属性来连接对象直到null
的一条链即为我们所谓的原型链。
(3)constructor : 它是对象独有的, 从一个对象指向一个对象。(即指向该对象的构造函数),每个对象都有构造函数。所有函数最终都是由Function()构造函数得来,所以constructor
属性的终点就是Function()。
注意:Function这个对象比较特殊,它的构造函数就是它自己(因为Function可以看成是一个函数,也可以是一个对象)。
总结:
⑴ __proto__
和constructor
属性是对象所独有的;
⑵ prototype
属性是函数所独有的,因为函数也是一种对象,所以函数也拥有__proto__
和constructor
属性。(即只有函数有prototype属性,其余两个函数对象都有。)
⑶ constructor
属性的含义就是指向该对象的构造函数,所有函数(此时看成对象了)最终的构造函数都指向Function()。
Object、Array、Function 的关系:
(1) 函数是一种对象。
(2) 对象都是通过函数创建的
(3) Object 是一切引用类型的父类,所有能被Object接收的均为对象(数组是一种对象)
引用数据类型:Object 、Array 、Function 、Data等。
有人说,Object类型相当于哺乳动物,Array相当于犬科动物,Function相当于猫科动物,他们分别是一种狗,一种猫,一种猪,一种鸭。他们彼此之间并无直接联系,但同属动物(引用类型)。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Javascript中的经典技巧 2020-03-20
- 带你了解JavaScript中的函数 2020-03-08
- 默认让页面的第一个控件选中的javascript代码 2020-02-20
- 详谈构造函数加括号与不加括号的区别 2020-01-17
- JavaScript中的apply和call函数详解 2020-01-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash