`

JavaScript 学习笔记十 练习任务系统

 
阅读更多
//开发一个任务系统,我们需要抽象出一个类来表示任务,对应的,
//每个任务都可能会有一个监听器,当任务执行之后,需要通知监听器。
//监听器的类
var EventListener = Base.extend({
    constructor : function(sense){
        this.sense =sense;
    },
    sense : null,
    handle : function(){
        logs(this.sense+"  occured");
    }
});
//任务类
var Task = Base.extend({
    constructor : function(name){
        this.name = name;
    },
    name : null,
    listener : null,
    execute : function(){
        logs(this.name);
        this.listener.handle();
    },
    setListener : function(listener){
        this.listener = listener;
    }
});
//创建类的方式很简单,需要给 Base.extend 方法传入一个 JSON 对象
//方法访问自身的成员时需要加 this 关键字
var pri = new Task("定时任务1");
var priListen = new EventListener("监听器1");
pri.setListener(priListen);
pri.execute();
//打印如下:
  //定时任务1
  //监听器1 occured

 

分享到:
评论
1 楼 sblig 2012-05-22  
//Base.js
var Base = function() {};
Base.prototype = {
	extend : function(source) {
		if (arguments.length > 1) { 
			var ancestor = this[source];
			var value = arguments[1];
			if (typeof value == "function" && ancestor
					&& /\bbase\b/.test(value)) {
				var method = value;
				value = function() {
					var previous = this.base;
					this.base = ancestor;
					var returnValue = method.apply(this, arguments);
					this.base = previous;
					return returnValue;
				};
				value.method = method;
				value.ancestor = ancestor;
			}
			this[source] = value;
		} else if (source) { 
			var extend = Base.prototype.extend;
			if (Base._prototyping) {
				var key, i = 0, members = ["constructor", "toString", "valueOf"];
				while (key = members[i++]) {
					
					if (source[key] != Object.prototype[key]) {
						extend.call(this, key, source[key]);
					}
				}
			} else if (typeof this != "function") {
				extend = this.extend || extend;
			}
			for (key in source)
				if (!Object.prototype[key]) {
					extend.call(this, key, source[key]);
				}
		}
		return this;
	},
	base : Base
};

Base.extend = function(_instance, _static) { 
	var extend = Base.prototype.extend;
	Base._prototyping = true;
	var proto = new this;
	extend.call(proto, _instance);
	delete Base._prototyping;
	var constructor = proto.constructor;
	var klass = proto.constructor = function() {
		if (!Base._prototyping) {
			if (this._constructing || this.constructor == klass) { 
				this._constructing = true;
				constructor.apply(this, arguments);
				delete this._constructing;
			}
			else { 
				var object = arguments[0];
				if (object != null) {
					(object.extend || extend).call(object, proto);
				}
				return object;
			}
		}
	};
	for (var i in Base) {
		klass[i] = this[i];
	}
	klass.ancestor = this;
	klass.base = Base.base;
	klass.prototype = proto;
	klass.toString = this.toString;
	extend.call(klass, _static);
	if (typeof klass.init == "function")
		klass.init();
	return klass;
};

Base = Base.extend({
	constructor : function() {
		this.extend(arguments[0]);
	}
   }, 
   {
	ancestor : Object,
	base : Base,
	implement : function(_interface) {
		if (typeof _interface == "function") {
			_interface(this.prototype);
		} else {
			this.prototype.extend(_interface);
		}
		return this;
	}
  });

相关推荐

    JavaScript练习程序学习笔记.rar

    这份“JavaScript练习程序学习笔记”很可能包含了一系列的代码示例、学习心得和常见问题解答,旨在帮助学习者深入理解和掌握JavaScript编程。 在JavaScript的学习过程中,首先会接触到基础语法,包括变量声明(var...

    JavaScript学习笔记_js常用函数封装_js包.zip

    本压缩包“JavaScript学习笔记_js常用函数封装_js包.zip”包含了对JavaScript基础及进阶技巧的学习资料,特别关注了函数封装和模块化开发实践。 首先,`tool.js`可能是一个实用工具函数集合,封装了一些常见的...

    韩顺平jquery学习笔记及练习

    《韩顺平jQuery学习笔记及练习》是一份珍贵的学习资源,由知名讲师韩顺平的课程实录整理而成,旨在帮助学习者深入理解和掌握jQuery这一强大的JavaScript库。jQuery简化了HTML文档遍历、事件处理、动画设计和Ajax交互...

    Groovy学习笔记 PDF版

    在《Groovy学习笔记》这本书中,你可能会学到如何快速入门Groovy,理解其基本语法,包括变量、控制流、类和对象的创建,以及如何利用Groovy的特性来提高开发效率。此外,书中可能还会涵盖Groovy在实际项目中的应用,...

    JavaScript1小时快速上手笔记快速复习

    这份"JavaScript1小时快速上手笔记快速复习"旨在帮助已有编程基础的学习者迅速掌握JavaScript的基本概念和常用技巧,以便在短时间内入门并进行有效的复习。 1. **变量与数据类型**:JavaScript支持七种数据类型,...

    JavaScript学习笔记之数组求和方法

    在JavaScript编程中,数组求和是一个经常遇到的问题,它要求开发者对数组中所有...对于初学者来说,通过练习数组求和这样的基础任务,不仅能够加深对JavaScript语言的理解,还能为后续更复杂的编程挑战打下坚实的基础。

    前端学习笔记,做一个简单的网站-定时器,学习代码

    在描述中的“前端学习笔记”中,你可能会看到`<html>`、`<head>`、`<body>`等基本元素,以及`<h1>`、`<p>`、`<button>`等用于创建标题、段落和按钮的元素。在制作定时器网站时,`<button>`元素特别关键,因为它将...

    mongoDB学习笔记及工具.zip

    本压缩包“mongoDB学习笔记及工具.zip”包含了一些资源,帮助你深入理解和掌握MongoDB的相关知识。 1. **笔记(note.txt)**: 这个文件可能是对MongoDB的基础概念、安装过程、基本操作和进阶特性的详细记录。笔记...

    跟李彦恢学javascript 电子书和课堂笔记1-15章.rar

    《跟李彦恢学JavaScript》是一本深受编程爱好者欢迎的JavaScript教程,由知名讲师李彦恢编著。这本书深入浅出地介绍了JavaScript的基础知识...结合电子书、笔记和实战练习,相信你在JavaScript的世界里将能够快速成长。

    网络编程(学习笔记)

    "学习笔记"文件可能包含了关于以上概念的详细解释、实例代码和练习题,这些都是深入理解网络编程的关键。你应该仔细阅读并尝试自己编写简单的客户端和服务端程序,加深理论知识的理解,并通过实践提升技能。 总结来...

    个人练习+笔记.zip

    在“个人练习+笔记.zip”这个压缩包中,我们可以预见到包含的是作者的个人学习实践和笔记,主要聚焦于CSS(层叠样式表)和前端开发领域。CSS是网页设计中不可或缺的一部分,它用于控制网页元素的外观,包括颜色、...

    2023年韩顺平javascript课堂实录笔记千万别错过好东西.doc

    韩顺平老师的2023年JavaScript课堂实录笔记深入浅出地介绍了JS的核心概念和应用。 首先,JavaScript在网页中的应用非常广泛,包括地图搜索、网页游戏、用户输入验证(如邮箱、数字、身份证、IP地址等)、股市数据...

    [removed]精益学习JavaScript-练习

    由于压缩包名为"javascript-master",我们可以推测它可能是一个包含JavaScript学习资源的项目,比如: 1. **代码示例**:不同难度级别的代码练习,涵盖基础到高级的各种概念和技术。 2. **解题指南**:每个练习...

    jquery 学习笔记源码 1第一个jquery

    《jQuery学习笔记源码——初识与实践》 在当今的Web开发领域,jQuery是一个不可或缺的JavaScript库,它极大地简化了DOM操作、事件处理、动画效果以及Ajax交互等任务。本篇文章将基于“jQuery学习笔记源码 1第一个...

    javascript201-udemy

    在 "javascript201-udemy-main" 压缩包中,我们可以期待找到一系列的学习资源,包括课程笔记、练习项目、示例代码和可能的测试题。这些材料将帮助学习者系统地学习和实践 JavaScript,巩固理论知识并提升实际操作...

    深入浅出javascript(pdf)

    此外,"全面的学习"可能还包括JavaScript的高级特性,如闭包、异步编程(如回调函数、Promise和async/await)、模块系统(CommonJS和ES6模块)、以及最近引入的特性,如箭头函数、模板字符串、解构赋值等。...

    笔记本JavaScript

    JavaScript是一种广泛应用于网页和网络...总的来说,"笔记本JavaScript"提供了一个系统学习和实践JavaScript的框架,通过一步步完成每个任务,可以帮助开发者建立起坚实的基础,并逐渐掌握这个强大而灵活的脚本语言。

    10步之内学会JavaScript .zip

    JavaScript是一种广泛应用于...通过系统地学习和实践这些知识点,初学者可以在短时间内掌握JavaScript的基本技能,并为进一步深入学习和应用打下坚实基础。记得理论与实践相结合,多做项目练习,提升自己的编程能力。

    html5在移动领域开发学习笔记(ppt版)

    HTML5是下一代网页标准,它的...通过学习这个HTML5在移动领域开发的学习笔记,你可以深入了解这些技术,结合实际案例进行练习,从而成为一名熟练的HTML5移动应用开发者。记住,不断实践和探索是掌握新技术的最佳途径。

    js-design-principles:Udacity JavaScript 设计原则练习和笔记

    在"js-design-principles-master"这个压缩包中,可能包含的是关于这些设计原则的练习和学习笔记,包括示例代码、解释和解决方案。通过实践这些原则,开发者可以提升JavaScript编程的技艺,写出更加高质量的代码。

Global site tag (gtag.js) - Google Analytics