美文网首页
原型链的理解

原型链的理解

作者: MY代码世间 | 来源:发表于2019-05-29 23:24 被阅读0次

在看《JavaScript面向对象编程指南》的第六章中的继承,引深了思考对prototype和new的思考。以下内容若有不妥,请尽情指出来。

先解释一下原型链

对象有一系列属性,其中有一个隐藏的属性__proto__,它连接实例和原型。首先来看它是怎么连接的呢。

下面看代码:

functionShape(){this.name ="shape";};Shape.prototype.heigh =34;functiontwoDshape(){this.age =24;}functiontriangle(){this.side =3;}twoDshape.prototype =newShape();twoDshape.prototype.constructor = twoDshape;triangle.prototype =newtwoDshape();triangle.prototype.constructor = triangle;varpraph =newtriangle();varpraph1 =newtriangle();

我们来看 praph

函数通过prototype赋值,在函数内也会有一个相应的__proto__属性,指向构造器函数的相应属性,这样形成了一条原型链。

下面我们通过一些问题和例子来讨论原型链共享属性和方法的作用:

__proto__中的属性是怎么被调用的呢???

我们通过 praph.属性名 就可以了,而且获取的值也和我们赋值的相同。

如果我们想修改这些属性,该怎么操作呢?

以年龄为例:

怎么简单就成功了? 一分钟思考一下。

由于原型链上的属性是会被实例所共享的,那我们定义一个新的实例praph1来测试一下,这个共享的属性是否被修改了呢?

varpraph1 =newtriangle();

似乎有些不对,我们说好的共享呢? 

我们再来检查praph和praph1这两个实例

praph在原来的基础上加上了一个age属性。why?

我们发现我定义一个普通的对象,我们只需要通过 对象名.属性名 的方式,就可以添加新的属性。

那我们怎么调用__proto__里的值,并证明它是共享的呢?

通过这样的方法我们证实了__proto__里面属性是共享的,正因为这样我们不能随便去修改 __proto__里面的属性和方法。因为一旦修改,同一个构造函数的所有实例,他们的__proto__都会被修改。

而且我们发现每个object都有 __proto__,里面为我们提供了一些常用的方法。

正因为__proto__的共享性质,在代码中合理的通过prototype来创建方法和属性,可以节约内存的储存空间。

相关文章

  • JavaScript 原型、原型链与原型继承

    原型,原型链与原型继承 用自己的方式理解原型,原型链和原型继承 javascript——原型与原型链 JavaSc...

  • 再来看一次JS继承

    原型链继承 理解原型链的概念 用一张图来理解原型链再合适不过了。 总结概括JS红宝书上对原型链的概念:每个函数都有...

  • 廖雪峰JS小记

    (function(){})() 原型,原型链 浅谈Js原型的理解JS 原型与原型链终极详解 对象 对象:一种无序...

  • 2018-01-09 关于javascript原型链的思考 pl

    s 深入理解原型和原型链? 构造函数 理解原型和原型链 new的时候js都干了什么? 一个实现继承的demo 构造...

  • Prototype

    原型链理解图

  • js继承完全理解

    认识原型链 要理解js的继承原来要先理解原型链,要理解原型链要先清楚下面两个结论: 任何一个构造函数(其实是任何一...

  • 来来来,通俗的理解一下原型,原型链......

    今天,在网上看到这个讲原型和原型链的通俗的分析,感觉对理解还是有帮助的,特此分享: 原型链理解起来有点绕了,网上资...

  • 读《javaScript高级程序设计-第6章》之继承

    读这篇之前,最好是已读过我前面的关于对象的理解和封装类的笔记。 一、原型链 原型链最简单的理解就是:原型对象指向另...

  • 理解关于Function的原型链问题

    理解关于Function的原型链问题 关于Function的原型链问题的一些个人粗略理解,欢迎指正错误的地方 要理...

  • 原型和原型链

    今天发现一张特别好的图(↑↑↑上图↑↑↑),对原型和原型链的理解特别直观友好。 原型和原型链 基础储备:每个 JS...

网友评论

      本文标题:原型链的理解

      本文链接:https://www.haomeiwen.com/subject/mylptctx.html