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
参考资料
相关推荐
nmgxzm00 2020-11-10
ifconfig 2020-10-14
hhanbj 2020-11-17
zfszhangyuan 2020-11-16
古叶峰 2020-11-16
一个智障 2020-11-15
jipengx 2020-11-12
81427005 2020-11-11
xixixi 2020-11-11
游走的豚鼠君 2020-11-10
苗疆三刀的随手记 2020-11-10
Web卓不凡 2020-11-03
小飞侠V 2020-11-02
帕尼尼 2020-10-30
爱读书的旅行者 2020-10-26
帕尼尼 2020-10-23
杏仁技术站 2020-10-23
淼寒儿 2020-10-22