掌握 Dojo 工具包,第 7 部分: Dojo 的扩展
2009-11-06 00:00:00 来源:WEB开发网通过对本系列文章的前六个部分的学习,你已经对 Dojo 的强大功能有所了解了。但有时候 Dojo 的一些功能并不能完全满足实际的要求,这时就需要对 Dojo 进行扩展了,比如可以对 Widget 进行扩展,使它以更加符合项目的要求展现或响应行为。本文将详细介绍 Dojo 的面向对象特性,以及如何在这个特性上开发新的 Dojo 模块,创建新的 Dijit,定义自己个性化的 Widget。
Dojo 类定义
JavaScript 基于原型的继承
JavaScript 是一门基于对象的语言,对象可以继承自其它对象,但是 JavaScript 采用的是一种基于原型的 (prototype based) 的继承机制,与开发人员熟知的基于类的 (class based) 继承有很大的差别。在 JavaScript 中,每个函数对象(实际上就是 JavaScript 中 function 定义代码)都有一个属性 prototype,这个属性指向的对象就是这个函数对象的原型对象,这个原型对象也有 prototype 属性,默认指向一个根原型对象。如果以某个特定的对象为原型对象,而这个对象的原型对象又是另一个对象,如此反复将形成一条原型链,原型链的末端是根原型对象。JavaScript 访问一个对象的属性时,首先检查这个对象是否有同名的属性,如果没有则顺着这条继承链往上找,直到在某一个原型对象中找到,而如果到达根原型对象都没有找到则表示对象不具备此属性。这样低层对象仿佛继承了高层对象的某些属性。下面通过一个例子说明基于原型的继承是如何工作的。
清单 1. 基于原型的继承
function Plane(w, s) {
this.weight = w;
this.speed = s;
}
Plane.prototype.name = "";
function JetPlane() {
this.seats = 0;
this.construct = function(name, weight, speed, seats) {
this.name = name;
this.seats = seats;
this.weight = weight;
this.speed = speed;
}
}
JetPlane.prototype.erased = true;
JetPlane.prototype = new Plane();
var p1 = new Plane(2000, 100);
p1.name = "Boeing";
var j1 = new JetPlane(500, 300);
j1.construct("F-22", 500, 500, 2);
console.log("p1.weight:" + p1.weight + ", p1.speed:" + p1.speed + ", p1.name:" +
p1.name);
console.log("j1.name:"+ j1.name + ", j1.weight:"+ j1.weight + ",
j1.speed:"+ j1.speed + ",j1.seats:"+ j1.seats);
- ››Dojo QuickStart 快速入门教程 (4) 简单的测试框架...
- ››Dojo QuickStart 快速入门教程 (5) 使用数组
- ››Dojo QuickStart Guide 快速入门 Why Dojo
- ››Dojo Quick Start Guide 快速入门 (2) 基本框架
- ››Dojo QuickStart 快速入门教程 (3) 选择器
- ››Dojo Javascript 编程规范 [1]
- ››Dojo Javascript 编程规范 [2]
- ››Dojo Javascript 编程规范 [3]
- ››Dojo Javascript 编程规范 [4]
- ››Dojo Javascript 编程规范 [5]
- ››Dojo学习笔记(7. dojo.dom)
- ››Dojo学习笔记(8. dojo.event & dojo.event.to...
更多精彩
赞助商链接