Mootools 1.2教程(18)——Class 类(第一部分)(3)
作者:Fdream 来源:Fdream博客 发布时间:2008-12-19 12:45:00
标签:Mootools,类,教程,javascript
实现选项功能
当创建类的时候,给类中的一些变量设置一些默认值会非常有用,如果用户没有提供初始输入的话。你可以手动地在初始化方法中设置这些变量,检查每一个输入来看用户是不是提供了相应的值,然后替换相应的默认值。或者,你也可以使用MooTools中Class.extras提供的Options类来实现。
给你的类增加一个选项功能非常简单,就像给类添加一个其他的键值对一样:
参考代码:
var Myclass = new Class({
Implements: Options
首先不要太着急实现选项的细节问题,我们会在后面的教程中更深入的学习。现在,我们已经拥有一个有选项功能的类了,我们还需要做的就是定义一些默认的选项。和其他的所有东西一样,只需要添加一些需要初始化的键值对就可以了。与定义单个值不一样的是,你需要像下面这样定义一组键值对集合:
参考代码:
var Myclass = new Class({
Implements: Options,
options: {
option_one : "First Option",
option_two : "Second Option"
}
现在我们就有了这些默认的集合,我们还需要提供一个方式来供用户在初始化这个类的时候覆盖这些默认值。你所要做的工作就是在你的初始化函数中增加一行新的代码,而Options类会完成其余的工作:
参考代码:
var Myclass = new Class({
Implements: Options,
options: {
option_one : "First Default Option",
option_two : "Second Default Option"
}
initialize: function(options){
this.setOptions(options);
}
})
一旦这个完成以后,你就可以通过传递一组键值对来覆盖任何默认选项:
参考代码:
// 覆盖所有的默认选项
var class_instance = new Myclass({
options_one : "Override First Option",
options_two : "Override Second Option"
});
// 覆盖其中的一个默认选项
var class_instance = new Myclass({
options_two : "Override Second Option"
})
注意一下初始化函数中的setOptions方法。这是Options类中提供的一个方法,可以让你在实例化一个类的时候设置选项。
参考代码:
var class_instance = new Myclass();
// 设置第一个选项
一旦设置了选项,你就可以通过变量options来访问它们。
参考代码:
var class_instance = new Myclass();
// 取得第一个选项的值
var class_option = class_instance.options.options_one;
// 变量class_option现在的值就为"First Default Option"了
如果你想在类的内部访问这个选项,请使用this语句:
参考代码:
var Myclass = new Class({
Implements: Options,
options: {
option_one : "First Default Option",
option_two : "Second Default Option"
}
test : function(){
// 注意我们使用this关键字来
// 引用这个类
alert(this.option_two);
}
});
var class_instance = new Myclass();
// 将弹出一个对话框,显示"Second Default Option"
class_instance.test();
把这些东西组合成一个类,看起来就是这样的:
参考代码:
var Class_four = new Class({
Implements: Options,
options: {
option_one : "Default Value For First Option",
option_two : "Default Value For Second Option",
},
initialize: function(options){
this.setOptions(options);
},
show_options : function(){
alert(this.options.option_one + "\n" + this.options.option_two);
},
});
var run_demo_4 = function ){
var demo_4 = new Class_four({
option_one : "New Value"
});
demo_4.show_options();
}
var run_demo_5 = function(){
var demo_5 = new Class_four();
demo_5.show_options();
demo_5.setOptions({option_two : "New Value"});
demo_5.show_options();
}
// 创建一个类class_four的实例
// 并指定一个名叫new_option的新选项
var run_demo_6 = function(){
var demo_6 = new Class_four({new_option : "This is a new option"});
demo_6.show_options();
}


猜你喜欢
- 我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑、字幕编辑、分离音频、视频音频混流等。又比如对音频文件的操作:音频
- 基础知识# 在Linux操作系统下,Python3的默认环境编码变为了utf-8编码,所以在编写代码的时候,字符串大部分都是以utf-8处理
- 博主做过比较多项目的archive脚本编写,对于这种删除数据的脚本开发,肯定是一开始的话用最简单的一个delete语句,然后由于部分表数据量
- 前言快要过年了,现在是工作的事情也不想干,学习也完全学不进去,关于xlsx的操作原本昨天已经写好了,不过悲催的是,忘记发布了直接关浏览器关闭
- 这篇文章主要介绍了如何给Python代码进行加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以
- 前言一个函数就可以接收另一个函数作为参数,简言之,函数的参数能够接收别的函数,这种函数就称之为高阶函数JavaScript 的高阶函数跟 S
- 正确使用字体和颜色可以让网页内容更易阅读,下面我们来看看具体的优化措施。留意颜色的对比对于视力不太好的人或者对于不太好的显示设备来说,黑地白
- 前言一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇文章了。这篇笔记主要记录mysql
- 写一个循环删除的过程。 create or replace procedure delBigTab(p_TableName in varch
- 外观模式(Facade Pattern)是什么外观模式是一种结构型模式,它提供了一个简单的接口,隐藏了系统的复杂性,为客户端提供了一个简单的
- 首先我们创建数据库表:CREATE TABLE `t_demo` ( `id` int(32) NOT NULL, `name` varch
- 关于怎么获得,我想其实网上有很多答案。list.index( )获得值的索引值,但是如果list中含有的值一样,例如含有两个11,22,这样
- 对于一个内容页的文章来说,如果这个文章内容过长或是其中有分类(排行),那么进行分页阅读无疑是最好的选择。如果一个文章内容不涉及分类,比如小说
- 本文实例讲述了Python基于辗转相除法求解最大公约数的方法。分享给大家供大家参考,具体如下:之前总结过一次高德纳TAOCP中的最大公约数求
- 代码如下:<title>雷锋|优酷-专辑 采集程序</title></head> &
- 索引是加速表内容访问的主要手段,特别对涉及多个表的连接的查询更是如此。这是数据库优化中的一个重要内容,我们要了解为什么需要索引,索引如何工作
- 学习前言在Github上我们可以看到许多模型,他们都有mAP值的评价指标,如下图所示:这到底是个啥呢?我查了好久的资料&hellip
- 公司运营着的网站,流量很大,网站是交互式的,经常在过了三四个月的时候索引生成的碎片就很多,由于很大一部分页面没有生成静态,这就导致网站在打开
- 背景:在pycharm中运行正常,但是使用命令方式就提示没有模块解决方案在Python安装目录下的\Lib\site-packages文件夹
- 语音识别是计算机软件识别口语中的单词和短语,并将其转换为可读文本的能力。那么如何在 Python 中将语音转换为文本?如何使用 Speech