JavaScript之原型链(二)
来源:互联网 发布:前端测试模拟ajax数据 编辑:程序博客网 时间:2024/05/29 16:27
JavaScript使对象实例在内部持有这样一个__proto__属性,并且不允许用户访问。这样,用户可以出于任何目的来修改constructor属性,而不用担心实例与父类的一致性。——《JavaScript语言精粹与编程实践》
一、内部原型链
上一篇一步一步地看到了通过prototype属性和constructor属性如何形成JavaScript原型链。其实在这个原型链之外,正如本篇最开始引用的文字所描述的那样,因为prototype属性和constructor属性可以任意赋值,为了维系父类与实例之间的继承关系,JavaScript内部还有一个通过__proto__属性形成的内部原型链来保持各个对象之间的继承关系。
再贴一遍上篇中写的代码:
var Language = function (name) { this.name = name;};Language.prototype.a ='aaa';var lan1 = new Language('JavaScript');
考虑到每个对象的__proto__属性,上述代码在内部环境中的构成如下图所示:
图中虚线部分即内部原型链。以下是对上面图示的验证:
二、JavaScript原型链小结
最后加入了内部原型链的链图看上去有点“错综复杂”,一时看明白之后过个十天半月恐怕又会忘记。为了便于日后回忆,下面再对链图的特点做如下小结:
- 查找对象的某个属性的过程,就是遍历对象的原型链直到原型为空(null)或找到该属性的过程。
- 所有的对象最终都会引用(继承于)一个指向null的Object()构造器的实例。
- 函数也是一种对象,它继承于系统内置的Function()构造器的实例;函数的原型是系统内置的Object()构造器的实例。
- 构造器的原型的constructor属性总是指向构造器本身。
0 0
- JavaScript之原型链(二)
- Javascript原型链(二)
- 再读《悟透javascript》之二、JavaScript原型
- javascript之对象学习笔记(二)--对象原型,继承
- JavaScript原型和闭包之---构造函数(二)
- javascript原型和闭包之------原型链 (七)
- html javascript原型(二)
- JavaScript之原型链(一)
- javascript之原型和原型链
- JavaScript---继承之原型链
- JavaScript中的原型(链)&继承(二)
- JavaScript中原型学习基本理解(原型链: prototype _proto_)(二)
- 深入理解JavaScript系列(二): 原型、原型链与继承
- Javascript 悟二 prototype 原型链
- javascript 学习笔记二【原型链模式】
- javascript原型链详细解析(二)
- Javascript(二)-06-(原型练习)
- JavaScript学习(二):原型继承
- javaee之连接池解析
- POJ2978-Colored stones(状压dp)
- get/post/put/delete
- 面试之--类加载过程
- NoClassDefFonut 但是那个类存在这是为什么?(原创)
- JavaScript之原型链(二)
- cookie和session区别
- eclipse创建简单maven+spring项目
- uva10462 Is There A Second Way Left? (次小生成树)
- Linux: 根目录下文件夹的主要内容
- linux设备驱动中断程序深度完全解析
- Java成长记 hashCode
- 110. Balanced Binary Tree
- 最小生成树学习总结