深入理解JavaScript的原型对象
来源:互联网 发布:淘宝达人如何发布帖子 编辑:程序博客网 时间:2024/05/18 09:12
深入理解JavaScript的原型对象
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
上一篇文章(JavaScript对象创建模式http://blog.csdn.net/hongse_zxl/article/details/44595809)介绍了JavaScript的对象创建的模式,其中简单介绍了原型对象。
JavaScript的继承机制是基于原型,而不是类。因此要理解JavaScript的继承机制,需要更深入了解原型对象。
先区分一下基于原型的常见写法:
这3种写法prototype,getPrototypeOf和__proto__之间的不同:
C.prototype:用于引用new C()创建的对象的原型对象
Object.getPrototypeOf(obj):是获取obj对象的原型对象的标准方法
obj.__proto__:是获取obj对象的原型对象的非标准方法
示意代码:
(尽可能用Object.getPrototypeOf,而不要用__proto__,详细原因可以参见《Effective JavaScript》的<Item 31: Prefer Object.getPrototypeOf to __proto__>,简单地说__proto__是非安全的)
如何实现继承呢?
通过原型链来模拟其他OO语言中的继承。先回顾一下上一篇文章中介绍过的构造函数和原型对象和实例对象间的关系:
每个构造函数内部均有一个prototype原型指针,指向该类型的原型对象C.prototype。原型对象C.prototype中包含一个回指向构造函数的指针constructor。这样就实现了构造函数和原型对象间的双向绑定。每个实例对象内部也包含一个指向原型对象C.prototype的指针。
现在用原型链来实现JavaScript的继承:
示意图:- 深入理解JavaScript的原型对象
- 深入理解JavaScript的原型对象
- javaScript对象 原型深入理解 继承
- [JavaScript面向对象编程指南]-深入理解JavaScript默认的继承方式——原型链
- 深入理解JavaScript的创建对象(构造函数、原型对象、实例)
- 深入理解JavaScript的原型和原型链
- 深入理解JavaScript系列--------强大的原型和原型链
- 深入理解javascript原型和闭包(1)-->一切都是对象
- 深入理解javascript构造函数和原型对象
- 深入理解javascript构造函数和原型对象
- 深入理解javascript构造函数和原型对象
- 深入理解javascript原型和闭包系列 深入理解javascript原型和闭包(2)——函数和对象的关系
- 深入理解javascript原型和闭包(2)--函数和对象的关系
- 深入理解javascript原型和闭包(2)——函数和对象的关系
- 深入理解javascript原型和闭包(2)——函数和对象的关系
- 深入理解javascript原型和闭包(2)——函数和对象的关系
- 深入理解javascript原型和闭包(2)——函数和对象的关系
- 深入理解javascript原型和闭包(2)——函数和对象的关系
- 【腾讯Bugly干货分享】安卓单元测试:What, Why and How
- 使用ThreadLocal控制事务实现用户转账
- Intersection of Two Arrays(两数组的交叉元素)
- golang中使用timer的三种方式
- Custom annotation view in Google Maps SDK(自定义注释在谷歌地图SDK)
- 深入理解JavaScript的原型对象
- 哪种缓存效果高?开源一个简单的缓存组件j2cache
- 关于springside4的mysql数据库的环境搭建
- 使用dexdump查看apk方法数
- 数据结构之链表(C++语言描述)
- DOM操纵样式表
- Python——UnicodeEncodeError: 'ascii' codec can't encode/decode characters
- 卷积神经网络——LeNet5为例
- HLS协议深入分析——时间线介绍(二)