近期研读了一下prototype框架源码,感觉要理解此框架先需要对js中的OO原理有相当的了解.大多数讲prototype的书中都没有讲是怎么实现的,而这又正是理解prototype的关键.作为一个以c语言为工作语言的人,我总是试图给出其实现模型,划了个草图.
以下是我对JS中的prototype的理解,仅为人个理解,各位看官自己辨别.想了解真正的实现,可以研究Spidermoney(一个JS Enginee).
A=function(x) {this.a1=x;…}
A.pi=3.14;
B=function(x) {this.b1=x;…}
B.fib={1,1,2,3,…};
C=function(x) {this.c1=x;…}
A.prototype = new B(1);
B.prototype = new C(1);
a=new A(1);
alert(a.a1,a.b1,a.c1);//
// 现在a就有了a1,b1,c1属性,那么a是如何得到c1属性的?
//先到a内部找,发现没有c1属性,就通过A变量(A是一个类变量,曲线所指,可能是通过constructor找到A的),找到A的prototype对象(这是一个B类的对象),就在这个对象内找c1属性,也没找到,继续通过其类变量(即B这个变量)找B类的prototype对象(即一个C类的对象),终于找到了c1.
总之某对象在得到属性时,先找本对象内查找,找到就返回,找不到就到它的prototype对象内找(指向prototype对象的指针并不放在对象内,而是放在类变量内!),找到就返回,找不到再在prototype对象的prototype对象中找,…,直到最后(prototype对象为空?)找不到就返回undefined.
// a.c1=100;
//当给a的c1属性赋值时,在a对象内查找c1属性,如果找到将其值改为100,如果找不到就增加一个c1属性设为100.
可以看出,给对象属性赋值时,不会沿着prototype对象链查找.
欢迎大家讨论, 对JS高级编程感兴趣的可加Q群67455248
- 大小: 7.6 KB
分享到:
相关推荐
JavaScript对象模型的核心在于理解基本数据类型、对象和函数的实现机制。了解这些基础知识对于编写高效、可靠的JavaScript代码至关重要。通过掌握内置数据类型、对象和构造器的工作原理,开发者可以更好地利用...
JavaScript对象模型(Object Model)和执行模型是理解JavaScript工作原理的关键概念。JavaScript是一种基于原型的动态类型语言,其对象模型是其核心特性之一。本文将深入探讨JavaScript的对象模型和执行模型,以及...
### 深入浅出JavaScript对象模型 #### JavaScript对象的本质 根据ECMA262规范,ECMAScript被定义为一种基于对象的语言而非传统的面向对象语言。这意味着在JavaScript中,对象被视为存储数据的一种大型数组形式,...
### JavaScript对象模型与执行模型详解 #### 一、引言 JavaScript作为一种强大的脚本语言,在Web开发领域占据了举足轻重的地位。其独特的对象模型和执行模型为开发者提供了灵活多变的功能,使得JavaScript能够轻松...
本压缩包文件“Javascript API for ArcGIS Server对象模型图.rar”包含了关于这个API的详细对象模型图,对于理解和学习JavaScript API的使用非常有帮助。 1. **对象模型图**:对象模型图是API中各种对象、类和方法...
JavaScript 对象模型是指在 JavaScript 中描述对象之间的层次关系的模型。该模型可以将对象分为核心部分、浏览器对象模型和文档对象模型三个组成部分。核心部分主要包括 JavaScript 的数据类型、运算符、表达式,...
JavaScript浏览器对象模型(BOM,Browser Object Model)是JavaScript在Web开发中用于操作浏览器特性的核心部分。它不依赖于HTML文档对象模型(DOM),而是提供了与浏览器交互的一系列对象,如Window、Navigator、...
- 对象模型描述了JavaScript对象间的层次结构,提供了一种接口来处理这些对象及其行为。在JavaScript中,对象模型分为核心部分和特定于环境的部分。 - **核心部分** 包括基本数据类型、运算符、表达式,以及全局...
#### 二、JavaScript中的对象模型 在JavaScript中,所有的事物都可以被视为对象。这包括内置的对象如数组、函数等,以及用户自定义的对象。这种模型使得JavaScript成为了一种强大的面向对象编程语言。 #### 三、...
8.3.1 JavaScript对象模型 JavaScript有全局对象、内置对象、宿主对象等层次结构,如DOM(文档对象模型)和BOM(浏览器对象模型)。 8.3.2 客户端对象层次介绍 客户端对象层次主要涉及浏览器提供的对象,如window、...
JavaScript是一种动态类型的脚本语言,虽然它不像Java或C#那样拥有传统的类和实例机制,...虽然JavaScript的面向对象模型与传统的面向对象语言有所不同,但这并不妨碍我们利用它的灵活性和强大功能来编写高质量的代码。
DOM,即文档对象模型,是JavaScript操作HTML和XML文档的主要工具。这两部分教程详细阐述了如何使用JavaScript来选择、创建、修改和删除DOM元素,从而实现页面动态效果和交互性。 3. **面向对象编程之ECMAScript...
JavaScript 事件模型是Web开发中的核心概念,它定义了如何处理和响应用户或浏览器的交互。ECMAScript规范中的ECMA-357是与事件处理相关的一部分,它提供了JavaScript中处理事件的标准。 事件流是JavaScript事件模型...
2. **JavaScript对象** 在JavaScript中,一切皆为对象。核心对象如全局对象、Math对象、Date对象、String对象、Array对象等,提供了丰富的内置方法来处理各种操作。例如,Math对象包含各种数学函数,如圆周率π...
**DHTML文档对象模型** DHTML(Dynamic HTML)是一种用于创建动态、交互式网页的技术,它结合了HTML、CSS(层叠样式表)、JavaScript以及DOM(文档对象模型)等技术,使得网页内容能够实时更新、交互性和动画效果...
本小册"JavaScript对象经典小册 chm"深入探讨了JavaScript中的核心概念——对象和数组,旨在帮助开发者更好地理解和掌握这些基础知识。 一、JavaScript对象 1. 对象概述:JavaScript对象是一种数据结构,它由键值对...
在JavaScript中,DOM对象模型提供了丰富的接口,可以方便地添加、修改和删除网页元素。例如,`window`对象是DOM中的顶级对象,代表浏览器窗口,它可以控制页面的行为。通过`window.alert()`方法,我们可以弹出一个...
原型链、构造函数、实例化和原型对象的概念是JavaScript对象模型的重要组成部分,手册会详细阐述这些内容。 在函数部分,手册可能涵盖函数的定义、匿名函数、箭头函数、函数参数(默认值、剩余参数和解构赋值)、...
7. **类(Class)语法**:虽然JavaScript原生支持基于原型的继承,但在ES6中引入了类语法,这使得JavaScript的面向对象编程更接近传统的类式继承模型。然而,即使有了类,JavaScript的实质仍然是基于原型的。 8. **...