资讯专栏INFORMATION COLUMN

关于JS的原型链的理解。

vvpvvp / 2016人阅读

摘要:的原型链,需要深刻的研究才能搞懂。对象都是通过函数即构造函数创建的。即这里的成为隐式原型。而构造函数的属性指向自身。这个对象的构造函数的是一个对象。走到原型链的终结。

- JS是一个非常有魅力的语言也是一个比较烦人的语言,主要就是因为他的特殊性灵活性。

JS的原型链,需要深刻的研究才能搞懂。不要纠结细节吧。实在不行就按这个死背住,慢慢就理解了。总之吧就是一句话万物皆对象

结合这个图示仔细理解吧。在你搞懂后你会发现。很嗨很刺激!

下面是必须记住的点。基础知识不用说了吧。

对象都是通过函数(即构造函数)创建的。
函数也是一个对象,即属性的集合,所以也可以对函数进行自定义属性。

每个函数默认的有一个prototype属性。
这个prototype的属性值是一个对象,默认的只有一个construct属性指向函数本身。

每个对象都有一个隐藏的属性——“__proto__”,这个属性引用了创建这个对象的函数的prototype。即:fn.__proto__ === Fn.prototype
这里的"__proto__"成为“隐式原型”。

对象的construct属性指向构造函数。而构造函数的construct属性指向自身。

回答什么是JS的原型链?

访问一个对象的属性时,先在基本属性中查找,如果没有,再沿着__proto__这条链向上找,这就是原型链。这个对象的__proto__等于这个对象构造方法的prototype。这个对象的构造函数的prototype是一个对象。 这个对象是被Object()创建出来的。(Object()是JS内部定义好的。) 所以它的__proto__就等于Object.prototype。Object.prototype等于null。到此就是原型链的终结。

然后呢还有一个点。

函数可以是一个普通函数也可以作为构造函数去创建对象。 当这个时候构造函数就和Object()函数是一个作用:作为构造函数去生成对象。
普通构造函数和Object一样的 他既是函数也是对象。他的__proto__指向于Function.prototype。这也是JS内部定义好的。Function.__proto__指向Function.prototype有点鸡生蛋蛋生鸡的意思(Function是被自己创建的)。这里是一个循环引用。 Function.prototype也是一个对象,他的__proto__指向于Object.prototype。Object.prototype等于null。走到原型链的终结。

以上就是我对JS原型链的理解,有什么错误的地方希望大家指出。

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

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

相关文章

  • 关于JS原型理解

    摘要:的原型链,需要深刻的研究才能搞懂。对象都是通过函数即构造函数创建的。即这里的成为隐式原型。而构造函数的属性指向自身。这个对象的构造函数的是一个对象。走到原型链的终结。 - JS是一个非常有魅力的语言也是一个比较烦人的语言,主要就是因为他的特殊性灵活性。 JS的原型链,需要深刻的研究才能搞懂。不要纠结细节吧。实在不行就按这个死背住,慢慢就理解了。总之吧就是一句话万物皆对象。 结合这个图示...

    wslongchen 评论0 收藏0
  • javascript-从toString方法在判断复杂数据类型上妙用,引申到对原型理解

    摘要:所以,当我们使用时,不能进行复杂数据类型的判断,因为它调用的是,虽然也继承自,但在上重写了,而我们通过实际上是通过原型链调用了。 关于 toString 方法在有关js的开发中使用应该是相当广泛的,这两天在看jQuery的源码,从 toString 本身了解与巩固了不少知识,写出来与大家一同分享。首先先上一段代码: var arr=[1,2,3]; toString.call(arr)...

    sean 评论0 收藏0
  • 从一道题解读JS原型

    摘要:明确重要的一点,这个连接存在于实例与构造函数的原型对象之间,而不是存在于实例与构造函数之间。相当于重新创建了,指向构造函数这一部分相当于是重新在原型对象中创建了一个属性,同时指向构造函数。 之前对js原型和原型链的理解一直觉得很绕,绕来绕去的,在看了《JavaScript高级程序设计》和各种文章之后,终于对原型和原型链有了初步的了解,可是还是没有很深入的了解,今次通过以前段时间遇到的一...

    harryhappy 评论0 收藏0
  • 详解js继承(二)

    摘要:寄生组合式继承终于写到最后一个继承了,我们在之前讲了种继承方式,分别是原型链,借用构造函数继承,组合继承,原型式继承,寄生式继承,其中,前三种联系比较紧密,后面两种也比较紧密,而我们要讲的最后一种,是和组合继承还有寄生式继承有关系的。 前言 趁周末结束之前赶紧先把坑填上。上回我们说到了原型链,并且留下了几个思考题,先把答案公布一下。 在最后一个例子里,console.log(b1.c...

    evin2016 评论0 收藏0
  • JS基础】原型对象那些事(二)

    摘要:只是构造函数上的一个属性,它是一个指针,指向原型对象,并不表示就是原型对象。在上一个例子中,就是一个对象,这个对象可以说是原生构造函数的实例,所以也是一个对象,所以它也有属性,不过它的指向也就是原型链的顶端,再往上就没有了。 上一篇讲了①原型对象是什么;②__proto__、prototype、constructor的关系;③原型对象的作用;④原型对象带来的一些需要注意的问题; 没理解...

    yanbingyun1990 评论0 收藏0

发表评论

0条评论

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