JavaScript 進階篇之函數 (四)

來源:互聯網
上載者:User

1、函數的建立

由於前面已經用了很多的函數,我就不在這裡多分享了。

2、嵌套函數 複製代碼 代碼如下:function china()
{
function people()//嵌套函數,只有china用它
{
document.write("我的心愿是當杜甫,最近網上他的漫畫,他活的好瀟洒");
}
people();
}

3、函數的直接量

Javascript允許函數用直接量來定義,說白了就是一個運算式,(匿名函數)。細節:匿名函數以後會用,要明白! 複製代碼 代碼如下:function china(people) //函式宣告
{
return peole;
}
var fun = function(people){return people;};//通過運算式聲明。效果等同

4、函數的參數(這裡大家要注意)

當你調用一個函數的參數少於聲明的參數個數是,其它的參數就是一個undefined的值。 複製代碼 代碼如下://列印函數
function displayArray(arr)
{
if(!arr)return;
for(var num =0;num<arr.length;num++)
{
document.write("Num is "+ arr[num]+ "\t");
}
document.write(" "+"<br />");
}
var array = [2,32,14,57,6];
function borrowArray(from,/*optional*/to)
{
if(!to) to = []; //to = to||[] 效果是等同的
for(var element in from) //使用枚舉遍曆數組
to.push(from[element]);//將元素添加到數組
return to;//返回
}
var returnnumber = borrowArray(array);//執行
displayArray(returnnumber);//列印
//輸出:Num is 2 Num is 32 Num is 14 Num is 57 Num is 6

5、可變的參數(Arguments 對象)
第一次看到這裡我也暈了,怎麼參數還變的呢,多白了,這個argument對象就是函數參數的管理者,比如你有一個函數,定義了3個參數,那argument就有一個和你定義的參數,一樣的資料集。
要注意:arguments標識符在函數體內才有效。你也可以就把它當成是函數的屬性吧! 複製代碼 代碼如下:function checkArgument(x,y,z)
{
if(arguments.length != 3) throw new Error("參數不匹配"); //檢查參數是否合法,挺好用吧!
return x+y+z;
}

下面的例子是一個比較數字大小的例子,參數是可以變的。 複製代碼 代碼如下:function compareMaxNumber()
{
var temp = Number.NEGATIVE_INFINITY;//表示javascript最小的複數
for(var arg=0;arg<arguments.length;arg++)
{
if(arguments[arg]>temp) temp = arguments[arg];
}
return temp; //返回參數中最大的數字
}
document.write(compareMaxNumber(2,34,5,23,766,1000)+"<br />");//這裡的參數可以有很多,輸出1000

6、將對象屬性作為參數 複製代碼 代碼如下:function displayArray(arr) //列印函數
{
if(!arr)return;
for(var num =0;num<arr.length;num++)
{
document.write("Num is "+ arr[num]+ "\t");
}
document.write(" "+"<br />");
}
//
function copyArray(from,from_start,to,to_start,length)//複製數組
{
for(var i = from_start; i <length;i++)
{
to.push(from[i]);//填充
}
return to;
}
//getArray 接受對象
function getArray(objarray)
{
//再次封裝,調用copyArray
return copyArray(objarray.from,objarray.from_start ||0,objarray.to|| [],objarray.to_start ||0,objarray.length);//這裡用了一點技巧。
}
var arr1 = [1,2,3,4,5];
displayArray(getArray({from:arr1,length:4}));

6、作為資料的函數 複製代碼 代碼如下:function add(x,y){return x + y;}
function multply(x,y){return x*y;}
function cut(x,y){return x -y ;}
operator(operator1,operator2,operator3)//接收3個參數,可以把函數作為參數使用。
{
return operator1(operator2,operator3);//執行的是add();
}
document.write(operator(add,operator(multply,2,4),operator(cut,12,2)));//輸出18了

7、作為方法的函數

這裡說的方法不過就是把函數儲存在對象的屬性裡面,然後通過屬性來調用,函數可以賦給任何變數。 複製代碼 代碼如下:var obj = {};
function display() //(something) 帶參數
{
return "Love";//something;
}
obj.method = display;//使用對象的直接量賦值。
obj.method();//調用。obj.method("Love");

其實javascript也引用了this關鍵字。大家要記住其實調用方法的對象就是this的值。Object.method(); 這裡Object就是對象,自然也就this的值了。 複製代碼 代碼如下:var privatename =
{name:"Frank",
age:21,
sex:'男',
display:function()
{document.write("my name is:"+this.name+"\t age :"+this.age)}};
privatename.display(); //輸出 name is:Frank age :21

8、建構函式

建構函式是初始化一個對象的屬性,並專門和new運算子一起使用的建構函式,new運算子建立一個對象,然後調用建構函式,把新建立的對象當this的值來傳遞,賦值。(要能理解) 複製代碼 代碼如下:function createProperty(name,version)//建構函式
{
this.name = name;
this.version = version;
}
var tools = new createProperty("Multply",1.0);初始化,工具的名稱,版本

9、定義函數的屬性

當你需要使用一個全域不變值時,使用Function對象的屬性將會很方便(以後建立命名空間,類的屬性,其實都是寄託在這個上面) 複製代碼 代碼如下:createNamespace.name = "360buy.define";
createNamespace.version = 1.2;
function createNamespace()
{
document.write("名稱空間:"+createNamespace.name +"版本:" + createNamespace.version);
}
createNamespace();//輸出:名稱空間:360buy.define版本:1.2

10、方法apply()和call()

使用這兩個方法可以像調用其它對象的方法一樣調用函數,兩個方法第一參數都是要調用的對象,後面的參數是要調用的函數參數。 複製代碼 代碼如下:function applyCallOperator(args,args2)
{
document.write(args+"<br />");
}
var objpeople = {};
applyCallOperator.apply(objpeople.Frank,[3,4]);//等同 applyCallOperator.call(objpeople.Frank,3,4) 前面就多[]
objpeople.Frank();

小結:這篇就像大家分享到這來吧,下一篇我們一起實現javascript類。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.