Mootools中使用extend和implement給你的函數擴充功能或方法

來源:互聯網
上載者:User

  當然了,所謂的給函數擴充功能或方法指的是不修改原函數的前提下.

很多人都知道Mootools物件導向的機制不錯,不過多數人都把物件導向理解錯了,認為物件導向就是類,其實不然,物件導向的範圍是非常廣的.

那麼我的這篇文章實際上就是物件導向的一種應用,只不過這個對象是一個function,而並非class.

//給指定Function擴充新的方法或屬性
var Fun=function(){
  alert('a')
};
Fun.extend({
  aa:function(){
    alert('b');
  }
});
Fun();
Fun.aa();

在上邊這段代碼中函數Fun唯一的用途就是用來輸出a這個字元,此時我們把這個函數理解成是一個對象,那如果我們要給這個函數增加一個新的方法,讓他除了能輸出a之外還能輸出b

因此我就是用了extend對Fun這個對象進行了一次方法擴充,注意擴充之後的方法調用的時候會略有不同.

下邊的例子同時示範了如何擴充屬性和方法.

var arr=[];
var Fun=function(){
arr=[1,2];
};
Fun.extend({
len:function(){//給Fun擴充屬性
return arr.length;
},
add:function(val){//給Fun擴充方法
arr.push(val);
}
});

var a=Fun.len(arr);
alert(a+'|'+arr);//此時輸出:0|

Fun();//調用此函數給arr賦值

var a=Fun.len();
alert(a+'|'+arr);//此時輸出:2|1,2

Fun.add('新的');

var a=Fun.len();
alert(a+'|'+arr);//此時輸出:3|1,2,新的

Fun.add(['a','b','c']);

var a=Fun.len();
alert(a+'|'+arr);//此時輸出:4|1,2,新的,a,b,c

len是我擴充的屬性,用來取得arr的length數,而add則是一個方法,用來給arr這個array添加新的值

implement是用來給所有的函數擴充方法的,其實很好理解,我們已經知道在Mootools中有pass,bind,delay等等的方法,這些方法都是Mootools為我們預定義的

但是如果你在實際開發過程中發現他為我們預定義的方法不能滿足我們的需求,此時怎麼辦呢,很簡單,只要自己擴充就好了,看下邊:

//擴充新的Function
var a=function(){};
var b=function(){};
Function.implement({
alert:function(msg){//直接alert輸出內容
alert(msg);
},
output:function(msg){//firebug的控制台會輸出內容,IE會報錯
console.log(msg);
}
});
a.alert('1');
a.output('2');
b.output('3');

看過這篇文章之後您是否對Mootools的物件導向有了一個新的認識呢?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.