最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mootools 1.2教程 類(一)

 更新時(shí)間:2009年09月15日 22:21:03   作者:  
今天我們將講一下用MooTools來創(chuàng)建和使用類的一些基本知識(shí)。
簡單地講,一個(gè)類就是一個(gè)容器,這個(gè)容器包含了一些變量集合和操作這些變量的函數(shù),以便實(shí)現(xiàn)特定的功能。在一個(gè)內(nèi)容牽涉較多的項(xiàng)目中,類會(huì)顯得難以置信的有用。
變量
在前面一系列的課程中,我們已經(jīng)學(xué)習(xí)過了Hash對象中鍵值對(key/value pair)的使用方式,因此,下面的這個(gè)例子中創(chuàng)建了一個(gè)類,它只包含了一些變量,你看起來可能會(huì)覺得非常的熟悉:
參考代碼:
復(fù)制代碼 代碼如下:

// 創(chuàng)建一個(gè)名為class_one的類
// 包含兩個(gè)內(nèi)部變量
var Class_one = new Class({
variable_one : "I'm First",
variable_two : "I'm Second"
});

類似地,你可以通過類似訪問hash中的變量的方式來訪問其中的變量,注意一下,在下面的代碼中,我們創(chuàng)建了一個(gè)我們在上面定義的Class_one類的實(shí)例。
參考代碼:
復(fù)制代碼 代碼如下:

var run_demo_one = function(){
// 創(chuàng)建類Class_one的一個(gè)實(shí)例,名稱為demo_1
var demo_1 = new Class_one();
// 顯示demo_1中的變量
alert( demo_1.variable_one );
alert( demo_1.variable_two );
}

方法/函數(shù)
方法是指一個(gè)指定的類中的函數(shù)(通俗地說就是一個(gè)類中的函數(shù)就叫做方法,換了個(gè)叫法而已)。這些方法必須通過這個(gè)類的實(shí)例來調(diào)用,而類本身不能調(diào)用它們。你可以像定義一個(gè)變量來定義一個(gè)方法,不同的是你需要給它指定一個(gè)靜態(tài)的值,給它指定一個(gè)匿名函數(shù):
參考代碼:
復(fù)制代碼 代碼如下:

var Class_two = new Class({
variable_one : "I'm First",
variable_two : "I'm Second",
function_one : function(){
alert('First Value : ' + this.variable_one);
},
function_two : function(){
alert('Second Value : ' + this.variable_two);
}
});

注意一下上面例子中的關(guān)鍵字this的使用。由于在上面的方法中操作的變量都是類內(nèi)部的變量,因此你需要通過使用關(guān)鍵字this來訪問這些變量,否則你將只能得到一個(gè)undefined值。
參考代碼:
復(fù)制代碼 代碼如下:

// 正確
working_method : function(){
alert('First Value : ' + this.variable_one);
},
// 錯(cuò)誤
broken_method : function(){
alert('Second Value : ' + variable_two);
}

調(diào)用新創(chuàng)建的類中的方法就像訪問那些類的變量一樣。
參考代碼:
復(fù)制代碼 代碼如下:

var run_demo_2 = function(){
// 實(shí)例化一個(gè)類class_two
var demo_2 = new Class_two();
// 調(diào)用function_one
demo_2.function_one();
// 調(diào)用function_two
demo_2.function_two();
}

initialize方法
類對象中的initialize選項(xiàng)可以讓你來對類進(jìn)行一些初始化操作,也可以讓你來處理一些可供用戶設(shè)置的選項(xiàng)和變量。(Fdream注:實(shí)際上這個(gè)就相當(dāng)于類的初始化方法。)你可以像定義方法一樣來定義它:
參考代碼:
復(fù)制代碼 代碼如下:

var Myclass = new Class({
// 定義一個(gè)包含一個(gè)參數(shù)的初始化方法
initialize : function(user_input){
// 創(chuàng)建一個(gè)屬于這個(gè)類的變量
// 并給它賦值
// 值為用戶傳進(jìn)來的值
this.value = user_input;
}
})

你也可以通過這個(gè)初始化來改變其他的選項(xiàng)或者行為:
參考代碼:
復(fù)制代碼 代碼如下:

var Myclass = new Class({
initialize : function(true_false_value){
if (true_false_value){
this.message = "Everything this message says is true";
}
else {
this.message = "Everything this message says is false";
}
}
})
// 這將設(shè)置myClass實(shí)例的message屬性為下面的字符串
// "Everything this message says is true"
var myclass_instance = new Myclass(true);
// 這將設(shè)置myClass實(shí)例的message屬性為下面的字符串
// "Everything this message says is false"
var myclass_instance = new Myclass(false);

所有的這一切工作都不需要聲明任何其他變量或者方法。只需要記住每個(gè)鍵值對后面的逗號(hào)就行了。真的是非常容易漏掉一個(gè)逗號(hào),然后花費(fèi)大量的時(shí)間來追蹤這些不存在的漏洞。
參考代碼:
復(fù)制代碼 代碼如下:

var Class_three = new Class({
// 當(dāng)類創(chuàng)建的時(shí)候就會(huì)執(zhí)行這個(gè)類
initialize : function(one, two, true_false_option){
this.variable_one = one;
this.variable_two = two;
if (true_false_option){
this.boolean_option = "True Selected";
}
else {
this.boolean_option = "False Selected";
}
},
// 定義一些方法
function_one : function(){
alert('First Value : ' + this.variable_one);
},
function_two : function(){
alert('Second Value : ' + this.variable_two);
}
});
var run_demo_3 = function(){
var demo_3 = new Class_three("First Argument", "Second Argument");
demo_3.function_one();
demo_3.function_two();
}

實(shí)現(xiàn)選項(xiàng)功能
當(dāng)創(chuàng)建類的時(shí)候,給類中的一些變量設(shè)置一些默認(rèn)值會(huì)非常有用,如果用戶沒有提供初始輸入的話。你可以手動(dòng)地在初始化方法中設(shè)置這些變量,檢查每一個(gè)輸入來看用戶是不是提供了相應(yīng)的值,然后替換相應(yīng)的默認(rèn)值?;蛘撸阋部梢允褂肕ooTools中Class.extras提供的Options類來實(shí)現(xiàn)。
給你的類增加一個(gè)選項(xiàng)功能非常簡單,就像給類添加一個(gè)其他的鍵值對一樣:
參考代碼:
復(fù)制代碼 代碼如下:

var Myclass = new Class({
Implements: Options
})

首先不要太著急實(shí)現(xiàn)選項(xiàng)的細(xì)節(jié)問題,我們會(huì)在后面的教程中更深入的學(xué)習(xí)。現(xiàn)在,我們已經(jīng)擁有一個(gè)有選項(xiàng)功能的類了,我們還需要做的就是定義一些默認(rèn)的選項(xiàng)。和其他的所有東西一樣,只需要添加一些需要初始化的鍵值對就可以了。與定義單個(gè)值不一樣的是,你需要像下面這樣定義一組鍵值對集合:
參考代碼:
復(fù)制代碼 代碼如下:

var Myclass = new Class({
Implements: Options,
options: {
option_one : "First Option",
option_two : "Second Option"
}
})

現(xiàn)在我們就有了這些默認(rèn)的集合,我們還需要提供一個(gè)方式來供用戶在初始化這個(gè)類的時(shí)候覆蓋這些默認(rèn)值。你所要做的工作就是在你的初始化函數(shù)中增加一行新的代碼,而Options類會(huì)完成其余的工作:
參考代碼:
復(fù)制代碼 代碼如下:

var Myclass = new Class({
Implements: Options,
options: {
option_one : "First Default Option",
option_two : "Second Default Option"
}
initialize: function(options){
this.setOptions(options);
}
})

一旦這個(gè)完成以后,你就可以通過傳遞一組鍵值對來覆蓋任何默認(rèn)選項(xiàng):
參考代碼:
復(fù)制代碼 代碼如下:

// 覆蓋所有的默認(rèn)選項(xiàng)
var class_instance = new Myclass({
options_one : "Override First Option",
options_two : "Override Second Option"
});
// 覆蓋其中的一個(gè)默認(rèn)選項(xiàng)
var class_instance = new Myclass({
options_two : "Override Second Option"
})

注意一下初始化函數(shù)中的setOptions方法。這是Options類中提供的一個(gè)方法,可以讓你在實(shí)例化一個(gè)類的時(shí)候設(shè)置選項(xiàng)。
參考代碼:
復(fù)制代碼 代碼如下:

var class_instance = new Myclass();
// 設(shè)置第一個(gè)選項(xiàng)
class_instance.setOptions({options_one : "Override First Option"});

一旦設(shè)置了選項(xiàng),你就可以通過變量options來訪問它們。
參考代碼:
復(fù)制代碼 代碼如下:

var class_instance = new Myclass();
// 取得第一個(gè)選項(xiàng)的值
var class_option = class_instance.options.options_one;
// 變量class_option現(xiàn)在的值就為"First Default Option"了

如果你想在類的內(nèi)部訪問這個(gè)選項(xiàng),請使用this語句:
參考代碼:
復(fù)制代碼 代碼如下:

var Myclass = new Class({
Implements: Options,
options: {
option_one : "First Default Option",
option_two : "Second Default Option"
}
test : function(){
// 注意我們使用this關(guān)鍵字來
// 引用這個(gè)類
alert(this.option_two);
}
});
var class_instance = new Myclass();
// 將彈出一個(gè)對話框,顯示"Second Default Option"
class_instance.test();

把這些東西組合成一個(gè)類,看起來就是這樣的:
參考代碼:
復(fù)制代碼 代碼如下:

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();
}
// 創(chuàng)建一個(gè)類class_four的實(shí)例
// 并指定一個(gè)名叫new_option的新選項(xiàng)
var run_demo_6 = function(){
var demo_6 = new Class_four({new_option : "This is a new option"});
demo_6.show_options();
}

代碼及示例
熟悉PHP的人可能認(rèn)識(shí)下面示例中的show_options方法中的print_r()函數(shù):
參考代碼:
復(fù)制代碼 代碼如下:

show_options : function(){
alert(print_r(this.options, true));
}

這不是一個(gè)javascript的原生方法,只不過是從PHP2JS項(xiàng)目中Kevin van Zonneveld的一小段代碼而已。對于那些不熟悉PHP的人,這個(gè)print_r()方法就給你了一個(gè)數(shù)組中鍵值對格式化后的字符串。在調(diào)試腳本的過程中,這是一個(gè)極其有用的debug工具,這個(gè)函數(shù)在后面提供的下載包中有詳細(xì)的代碼,我強(qiáng)烈推薦使用它來測試和研究。
參考代碼:
復(fù)制代碼 代碼如下:

var Class_five = new Class({
// 我們使用了選項(xiàng)
Implements: Options,
// 設(shè)置我們的默認(rèn)選項(xiàng)
options : {
option_one : "DEFAULT_1",
option_two : "DEFAULT_2",
},
// 設(shè)置我們的初始化函數(shù)
// 通過setOptions方法來設(shè)置選項(xiàng)
initialize : function(options){
this.setOptions(options);
},
// 用來打印選項(xiàng)數(shù)組信息的方法
show_options : function(){
alert(print_r(this.options, true));
},
// 通過setOptions方法來交換兩個(gè)選項(xiàng)的值
swap_options : function(){
this.setOptions({
option_one : this.options.option_two,
option_two : this.options.option_one
})
}
});
function demo_7(){
var demo_7 = new Class_five();
demo_7.show_options();
demo_7.setOptions({option_one : "New Value"});
demo_7.swap_options();
demo_7.show_options();
}

更多學(xué)習(xí)

下載一個(gè)包含你開始所需要的所有東西的zip包

相關(guān)文章

  • Mootools 1.2教程 類(一)

    Mootools 1.2教程 類(一)

    今天我們將講一下用MooTools來創(chuàng)建和使用類的一些基本知識(shí)。
    2009-09-09
  • Mootools 1.2教程(21)——類(二)

    Mootools 1.2教程(21)——類(二)

    在今天的教程中,我們將主要學(xué)習(xí)一下MooTools中類的實(shí)現(xiàn)和繼承(擴(kuò)展)。
    2009-09-09
  • Mootools 1.2教程 同時(shí)進(jìn)行多個(gè)形變動(dòng)畫

    Mootools 1.2教程 同時(shí)進(jìn)行多個(gè)形變動(dòng)畫

    今天我們來學(xué)習(xí)一下Fx.Elements插件,這是一個(gè)基于Fx.Morph的插件。與應(yīng)用于單個(gè)元素不同的是,F(xiàn)x.Elements可以允許你一次性給多個(gè)元素添加動(dòng)畫。
    2009-09-09
  • Mootools 1.2教程(2) DOM選擇器

    Mootools 1.2教程(2) DOM選擇器

    今天開始本系列教程的第2講。在這一講中,我們會(huì)學(xué)習(xí)幾種選擇HTML元素的方法。在許多方面,這是MooTools用得最多最基本的。畢竟,要?jiǎng)?chuàng)建一個(gè)基于HTML元素的交互性用戶體驗(yàn),你必須首先把它們掌握在手中。
    2009-09-09
  • Mootools 1.2教程(3) 數(shù)組使用簡介

    Mootools 1.2教程(3) 數(shù)組使用簡介

    在上一篇教程——《Mootools 1.2教程(2)——DOM選擇器》中,我們介紹了一下選擇器,其中有很多方法就會(huì)返回?cái)?shù)組(一個(gè)你可以對其中內(nèi)容進(jìn)行多種操作的特殊列表)。
    2009-09-09
  • 通過Mootools 1.2來操縱HTML DOM元素

    通過Mootools 1.2來操縱HTML DOM元素

    今天我們來深入地學(xué)習(xí)一下如果操縱HTML元素。通過MooTools 1.2,你可以添加新元素到一個(gè)HTML頁面中,也可以刪除元素,以及改變?nèi)魏螛邮交蛘咴貐?shù),這些都非常容易。
    2009-09-09
  • MooTools 1.2中的Drag.Move來實(shí)現(xiàn)拖放

    MooTools 1.2中的Drag.Move來實(shí)現(xiàn)拖放

    今天我們開始第十二講,今天我們將仔細(xì)看一下Drag.Move——一個(gè)很強(qiáng)大的MooTools類,它可以讓你給你的web應(yīng)用添加拖放功能。
    2009-09-09
  • Mootools 1.2教程 輸入過濾第二部分(字符串)

    Mootools 1.2教程 輸入過濾第二部分(字符串)

    今天我們來看一看MooTools給我們提供的額外的一些處理字符函數(shù)。這只是MooTools字符串處理中的一部分,并不包含一些神秘的函數(shù)(比如toCamelCase())和使用正則表達(dá)式處理字符串的函數(shù)。
    2009-09-09
  • 背景圖跟隨鼠標(biāo)移動(dòng)的Mootools插件實(shí)現(xiàn)代碼

    背景圖跟隨鼠標(biāo)移動(dòng)的Mootools插件實(shí)現(xiàn)代碼

    背景圖跟隨鼠標(biāo)移動(dòng)的Mootools插件實(shí)現(xiàn)代碼,學(xué)習(xí)mootools的朋友可以參考下。
    2011-12-12
  • Mootools 圖片展示插件(lightbox,ImageMenu)收集集合

    Mootools 圖片展示插件(lightbox,ImageMenu)收集集合

    Mootools圖片展示插件(lightbox,ImageMenu)收集,學(xué)習(xí)mootools的朋友可以參考,非常不錯(cuò)的效果。
    2010-05-05

最新評論

临朐县| 奉化市| 施甸县| 长治市| 巧家县| 南溪县| 淅川县| 三明市| 卢氏县| 青川县| 济阳县| 桐乡市| 永福县| 上虞市| 宝兴县| 洛宁县| 长治县| 胶南市| 广元市| 会宁县| 会宁县| 时尚| 永顺县| 剑河县| 西城区| 衡山县| 建阳市| 阿拉尔市| 武城县| 嘉定区| 江阴市| 广丰县| 南充市| 尼木县| 阳西县| 海口市| 兰州市| 泽普县| 郯城县| 泰来县| 志丹县|