A-A+

前端面试时经常问到的prototype和__proto__的区别

2018年08月09日 javascript 暂无评论 阅读 20 views 次

JavaScript 中,万物皆对象!但对象也是有区别的。分为普通对象和函数对象。


凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。f1,f2,归根结底都是通过 new Function()的方式进行创建的。Function Object 也都是通过 New Function()创建的


实例的构造函数属性(constructor)指向构造函数。

每个对象都有 __proto__ 属性,但只有函数对象才有 prototype 属性

原型对象,顾名思义,它就是一个普通对象

在默认情况下,所有的原型对象都会自动获得一个 constructor(构造函数)属性,这个属性(是一个指针)指向 prototype 属性所在的函数(Person)

原型对象(Person.prototype)是 构造函数(Person)的一个实例。

那原型对象是用来做什么的呢?主要作用是用于继承

JS 在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__ 的内置属性,用于指向创建它的构造函数的原型对象。

不过,要明确的真正重要的一点就是,这个连接存在于实例(person1)与构造函数(Person)的原型对象(Person.prototype)之间,而不是存在于实例(person1)与构造函数(Person)之间。

所有函数对象的 __proto__ 都指向 Function.prototype,它是一个空函数(Empty function

打赏作者
如果文章对您有所帮助请打赏支持本站发展。

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

标签:

给我留言

您必须 登录 才能发表留言!

Copyright © 前端技术分享休闲玩耍去处分享-大一网 保留所有权利.   Theme  Ality

用户登录 ⁄ 注册

分享到: