JS之原型对象

每当创建一个新函数,都会依据一些规则为其创建一个prototype属性,该属性指向函数的原型对象。原型对象默认有一个constructor(构造函数)属性,该属性是一个指向prototype属性所在函数的指针。

通过构造函数创建实例后,每个实例都有一个 [[Prototype]] 属性(内部属性,不可编写代码访问),该属性指向构造函数的原型对象。

构造函数与实例之间的连接实际上是:实例与构造函数的原型对象的连接,而不是实例与构造函数的连接。

Object.getPrototypeOf()可以方便的取得一个对象的原型。

当代码在读取某个对象的属性时,都会执行一次搜索,目标是具体给定名字的属性。首先会在对象实例中搜索,如果在实例中找到了具体给定名字的属性,就返回该属性的值;如果没有找到,就继续搜索指针指向的原型对象,在原型对象中查找具体给定名字的属性,如果找到了,就返回该属性的值。

对象实例可以访问保存在原型对象中的值,但是不能通过对象实例重写原型的值。当我们为对象实例添加一个属性时,这个属性会屏蔽原型对象中保存的同名属性。

可以使用 delete 操作符完全删除实例属性,从而能够重新访问原型中的属性。

用 hasOwnPrototype()(继承自Object)可以检测一个属性来自实例还是存在于原型。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 6,440评论 0 6
  • 理解原型对象 无论什么时候,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这...
    jayafs阅读 3,269评论 0 50
  • 原文片段 《高效能人士的七个习惯》 P133-P134 “以终为始”的一个原则基础是“任何事都是两次创造而成”。我...
    胡妍颖阅读 1,346评论 2 0
  • 昨天晚上,跟动儿有段非常愉快的晚餐时光。一起聊了很多话题,继续了给钢琴鸡蛋的话题,给钢琴喝奶时,起初喂的是纯的,之...
    小可以之动阅读 3,715评论 2 51
  • 第3次画,花了2个小时。技巧和色彩都进一步完善,本来沒想好取什么名,到最后给漩涡最里侧涂色时,惊觉它们象眼晴,于是...
    Rabbit622阅读 1,769评论 6 1

友情链接更多精彩内容