美文网首页三月听我说
JS原型(链)一天的成果(Java看)

JS原型(链)一天的成果(Java看)

作者: STioPlato | 来源:发表于2020-04-10 23:13 被阅读0次

今天除了面试thoughtworks凉了意外,中午没睡着午觉意外,晚上饿的半天没吃到饭意外,剩下大部分时间应该就是在看JS的原型链了。为啥突然想看这个我也说不清,但是是时候总结一下今天的成果了。老规矩,如有错误,欢迎指点。

一切的一切都是两个属性____proto__(不太会用markdown,想打出来正常的proto但就是给我变成粗体识别出来,只能多加两个下划线了)和prototype,首先发布我迷惑了半天的一点,只有函数才拥有prototype这个属性。而在JS中,万物皆对象,这是真的比Java还狠,连类都没,真的是只剩下对象了,所有的对象都有____proto__属性。然后就是一个表达式。

对象.____proto__ = 构造函数.prototype

我们管prototype叫做函数的原型对象,它也是一个对象,是在用构造函数创建对象的时候,把构造函数的原型对象赋给生成对象的原型(____proto__)中。大概就是在生成的对象中,保留一个自己构造函数的原型对象(我到现在也不知道这个对象和构造函数究竟有多大的关系,然而我们探讨的似乎始终就是这个问题)。我是非常能体会Java同学心中的痛楚的,怎么感觉说了这么多,什么构造函数什么的,就是不见类的身影呢,没有类,怎么保存对象的属性和方法呢艹。然而,JS就是通过这个原型对象来保存的。

查看对象原型的两种方法:
1, obj.____proto__
2, Object.getPrototypeOf(obj)

说说原型链没准能够更好得帮我们理解原型的概念。什么是原型链呢?
在JS中,万物皆对象,任何对象都有____proto__属性,也就是连接当前对象和自己构造器原型对象的一个属性,这样一层一层的往上递归,到最后的一个对象会是Object对象的原型对象,而Object的原型是为null的。这个对象链条就被称作原型链好像,说实话,这个继承关系,和Java里面的类的继承最大的区别就是,Java中是依靠类来保存属性信息的,而JS中可以依靠构造函数来保存,而构造函数又是对象,也就是说,JS整个继承链中,全都是通过对象来保存继承关系的。。想想都觉得真的好奇怪啊!由此,当在一个对象上找属性找不到的时候,就会去原型链上面查找,但是却不会在自身的prototype上查找。

说实话,写了这么些,我自己都开始对原型和原型对象这两个词抱有迷惑了,希望有大佬可以指点一下。目前先暂定为一个意思吧。

相关文章

  • JS原型(链)一天的成果(Java看)

    今天除了面试thoughtworks凉了意外,中午没睡着午觉意外,晚上饿的半天没吃到饭意外,剩下大部分时间应该就是...

  • 原型链以及继承

    原型链 原型链类似关系链,几乎所有的js对象都会有通过原型链prototype继承过来的方法或者属性,在java和...

  • 廖雪峰JS小记

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

  • JS的__proto__和prototype

    最近在回顾JS的原型和原型链的知识,熟悉JS的同学都知道JS的继承是靠原型链实现的,那跟原型链相关的属性__pro...

  • Javascript(三)之原型继承理解

    进阶路线 3 原型继承 3.1 优秀文章 最详尽的 JS 原型与原型链终极详解 一 最详尽的 JS 原型与原型链终...

  • js构造函数与原型对象的区别与联系

    建议阅读本篇之前先了解原型对象和构造函数的概念,你可以看JS链知多少?了解原型,看学好js,这些js函数概念一定要...

  • JS中的继承

    js并不是想java一样面向对象,而是基于对象,所以js是通过prototype的原型链继承 prototype ...

  • 关于javascript的原型和原型链,看我就够了(一)

    关于js的原型和原型链,有人觉得这是很头疼的一块知识点,其实不然,它很基础,不信,往下看要了解原型和原型链,我们得...

  • 从实现角度分析js原型链

    从实现角度分析js原型链 欢迎来我的博客阅读:《从实现角度分析js原型链》 网上介绍原型链的优质文章已经有很多了,...

  • JS原型理解

    原型链是整个JS面向对象的基础在理解原型链之前先来谈谈JS创建对象的几种方式 可以看到输出了4个对象,a1和a2看...

网友评论

    本文标题:JS原型(链)一天的成果(Java看)

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