资讯专栏INFORMATION COLUMN

理解原型对象

Zack / 3218人阅读

无论什么时候,我们创建的每个新的函数都会有一个prototype(原型)属性,这个属性是一个指针,会指向一个对象,即该函数的原型对象。在默认的情况下,所以的原型对象都会自动获得一个constructor属性,可以叫构造器属性,也可以叫构造函数属性,这个属性是一个指向prototype属性所在函数的指针.如下图所示:

当读取某个对象的某个属性时,都会先从对象实例本身开始检索,如果没有,再到该函数的原型中去查找。
虽然我们可以通过对象实例来访问原型中的值,但是却不能通过对象实例重写原型中的值。如果在实例中,添加了一个与原型中相同名字的属性,该属性就会屏蔽掉原型中的那个属性,即使我们把这个属性设为null,也不会恢复其指向原型的连接,不过,使用delete操作符可以完全解除实例属性的屏蔽,使其重新恢复指向原型的连接。

这里用到的方法

1.构造函数名.prototype.isPrototypeOf(实例化对象名); 用来判断实例化对象里是否有指向原型对象的指针[prototype],如果有返回true;
2.Object.getPrototypeOf(); 这个方法用来返回[[prototype]]的值。例如:

alert(Object.getPrototypeOf(person1)==Person.prototype);   //true
alert(Object.getPrototypeOf(person2).name);   //"Nicholas"

3.hasOwnProperty()方法可以用来检测一个属性是否存在于实例中,还是存在于原型中。只有给定属性存在于对象实例中,才会返回true.
4.原型和in操作符
有两种方式使用in操作符,多带带使用和在for-in循环中使用。多带带使用时,in操作符会在通过对象能够给定属性时返回true。无论是在原型中还是实例中。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88462.html

相关文章

  • 【5】JavaScript 函数高级——原型原型链深入理解(图解)

    摘要:探索是如何判断的表达式如果函数的显式原型对象在对象的隐式原型链上,返回,否则返回是通过自己产生的实例案例案例重要注意的显示原型和隐式原型是一样的。面试题测试题测试题报错对照下图理解 原型与原型链深入理解(图解) 原型(prototype) 函数的 prototype 属性(图) 每个函数都有一个prototype属性,它默认指向一个Object空对象(即称为:原型对象) 原型对象中有...

    马龙驹 评论0 收藏0
  • JavaScript原型原型链、继承的理解

    摘要:构造函数实例和原型的概念和关系每个函数都属于对象,都会有一个属性叫。这也是继承的依据。这样一来,原型找不到构造函数,这是非常蛋疼的事情,违反了原型链的定义啊。所以现在子对象原型和父对象原型是就建立关系了。 构造函数、实例和原型的概念和关系 每个函数都属于对象,都会有一个属性叫prototype。这个属性指向一个对象,我们把他叫做当前函数的原型对象。原型对象下面有个属性叫construc...

    Aceyclee 评论0 收藏0
  • 理解javaScript原型原型

    摘要:构造函数的属性指向原型对象原型对象的属性指向构造函数实例对象的指向原型对象所有引用类型默认都继承了,而这个继承也是通过原型链实现的。第一种方式是使用操作符,只要用这个操作符来测试实例与原型链中出现过的构造函数,结果就会返回。 理解对象 首先对象的定义是:无序属性的集合,其属性可以包含基本值、对象或者函数。严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名...

    NSFish 评论0 收藏0
  • 新手理解的JS原型

    摘要:我们画张图来表示图中这条红色的线就是原型链。我们把方法放到实例的原型对象上面,也就是上面来供所有实例使用小明小红用图表示补充说一下我的经历,一开始理解原型链时,一直在在这个三个属性中绕来绕去。 一直以来对于JavaScript 的原型链的概念,始终有些东西有一种模糊感,最近刚好有时间就塌下心认真的把《JavaScript高级程序设计》中相关内容认真读了一遍,也查看了很多网上很多资料,以...

    Mike617 评论0 收藏0
  • 如何理解JavaScript的原型原型链?

    摘要:之前有朋友问怎么去理解原型和原型链的问题。理解原型链的小技巧将箭头视作泛化子类到父类关系那么图中所有的虚线将构成一个继承层级,而实线表示属性引用。原型链是实现继承的重要方式,原型链的形成是真正是靠而非。 之前有朋友问怎么去理解原型和原型链的问题。这个问题,在面试中,很多同学经常都会遇到。这里给大家讲讲,方便大家记忆。 JavaScript的特点JavaScript是一门直译式脚本...

    xuexiangjys 评论0 收藏0
  • 如何理解JavaScript的原型原型链?

    摘要:之前有朋友问怎么去理解原型和原型链的问题。理解原型链的小技巧将箭头视作泛化子类到父类关系那么图中所有的虚线将构成一个继承层级,而实线表示属性引用。原型链是实现继承的重要方式,原型链的形成是真正是靠而非。 之前有朋友问怎么去理解原型和原型链的问题。这个问题,在面试中,很多同学经常都会遇到。这里给大家讲讲,方便大家记忆。 JavaScript的特点JavaScript是一门直译式脚本...

    adie 评论0 收藏0

发表评论

0条评论

Zack

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<