Javascript原型总结

Posted zenronphy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript原型总结相关的知识,希望对你有一定的参考价值。

概念准备

面向对象编程

  • 我们熟悉的Java和C#里,面向对象的两个基本概念是类class和实例instance,而ES6以前的javascript并没有设计class。
  • Javascript里的class是通过原型来实现的,通过将某个对象的__proto__属性指向另外一个对象的prototype来实现类和继承,如classA.__proto__ = classB.prototype,看上去就像B是A的父类,A继承自B类。

原型链、隐式原型、显式原型

  • 通常我们说的隐式原型指的是__proto__,而显式原型指的是prototype。
  • prototype在IE里不提供,因此考虑到兼容性的话可以通过Object.getPrototypeOf(对象)来获得。
  • 原型链通常指的是隐式原型链,JavaScript里任何东西都是对象,任何一个对象内部都有一个内置对象叫__proto__,即隐式原型,它可以包含任何东西让对象继承。
  • 当然__proto__本身也是一个对象,它自己也有自己的__proto__,这样一级一级向上,就构成了一个__proto__链,即原型链。
  • 当然原型链不会无限向上,它有个终点,可以称为原型链的顶端,或者root,它是一个特殊的对象,它的__proto__为null,如下所示:
obj.__proto__.__proto__......__proto__ === null;
  • 所有对象都有__proto__,而只有function对象拥有prototype,因此function对象既有__proto__又有prototype。

所有对象的顶端Object.prototype


所有函数的顶端Function.prototype


参考资料

  1. Javascript原型链以及Object、Function之间的关系
  2. 廖雪峰官方网站:Javascript面向对象编程

以上是关于Javascript原型总结的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript学习总结——this原型链javascript面向对象

总结javascript基础概念系列计划分为三个部分:作用域,事件循环,原型链。

JavaScript面试题总结系列

JavaScript 原型继承原型链

Javascript原型总结

关于javascript中原型和原型链的理解