function func1(…){…} var func2=function(…){…}; var func3=function func4(…){…}; var func5=new Function(); |
var myArray=[]; //等價(jià)于 var myArray=new Array(); 同樣,下面的兩段代碼也都是創(chuàng)建一個(gè)函數(shù)myFunction: function myFunction(a,b){ return a+b; } //等價(jià)于 var myFunction=new Function("a","b","return a+b"); |
var funcName=new Function(p1,p2,...,pn,body); |
new Function("a", "b", "c", "return a+b+c") new Function("a, b, c", "return a+b+c") new Function("a,b", "c", "return a+b+c") |
var i=function (a,b){ return a+b; }(1,2); alert(i); |
function funcName(){ //函數(shù)體 } //等價(jià)于 var funcName=function(){ //函數(shù)體 } |
<script language="JavaScript" type="text/javascript"> <!-- func(); var func=function(){ alert(1) } //--> </script> |
<script language="JavaScript" type="text/javascript"> <!-- func(); function func(){ alert(1) } //--> </script> |
<script language="JavaScript" type="text/javascript"> <!-- func(); var someFunc=function func(){ alert(1) } //--> </script> |
由此可見,盡管JavaScript是一門解釋型的語言,但它會(huì)在函數(shù)調(diào)用時(shí),檢查整個(gè)代碼中是否存在相應(yīng)的函數(shù)定義,這個(gè)函數(shù)名只有是通過function funcName()形式定義的才會(huì)有效,而不能是匿名函數(shù)。
函數(shù)對(duì)象和其他內(nèi)部對(duì)象的關(guān)系
除了函數(shù)對(duì)象,還有很多內(nèi)部對(duì)象,比如:Object、Array、Date、RegExp、Math、Error。這些名稱實(shí)際上表示一個(gè)類型,可以通過new操作符返回一個(gè)對(duì)象。然而函數(shù)對(duì)象和其他對(duì)象不同,當(dāng)用typeof得到一個(gè)函數(shù)對(duì)象的類型時(shí),它仍然會(huì)返回字符串“function”,而typeof一個(gè)數(shù)組對(duì)象或其他的對(duì)象時(shí),它會(huì)返回字符串“object”。下面的代碼示例了typeof不同類型的情況:
alert(typeof(Function))); alert(typeof(new Function())); alert(typeof(Array)); alert(typeof(Object)); alert(typeof(new Array())); alert(typeof(new Date())); alert(typeof(new Object())); |
Function.prototype.method1=function(){ alert("function"); } function func1(a,b,c){ return a+b+c; } func1.method1(); func1.method1.method1(); |
Object.prototype.getType=function(){ return typeof(this); } var array1=new Array(); function func1(a,b){ return a+b; } alert(array1.getType()); alert(func1.getType()); |
function func1(theFunc){ theFunc(); } function func2(){ alert("ok"); } func1(func2); |
function func(a,b){ alert(a); alert(b); for(var i=0;i<arguments.length;i++){ alert(arguments[i]); } } func(1,2,3); |
var sum=function(n){ if(1==n)return 1; else return n+sum(n-1); } alert(sum(100)); |
var sum=function(n){ if(1==n)return 1; else return n+arguments.callee(n-1); } alert(sum(100)); |
Array.prototype.p1=1; alert(new Array().p1); function func(){ alert(arguments.p1); } func(); |
Function.prototype.apply(thisArg,argArray); Function.prototype.call(thisArg[,arg1[,arg2…]]); |
//定義一個(gè)函數(shù)func1,具有屬性p和方法A function func1(){ this.p="func1-"; this.A=function(arg){ alert(this.p+arg); } } //定義一個(gè)函數(shù)func2,具有屬性p和方法B function func2(){ this.p="func2-"; this.B=function(arg){ alert(this.p+arg); } } var obj1=new func1(); var obj2=new func2(); obj1.A("byA"); //顯示func1-byA obj2.B("byB"); //顯示func2-byB obj1.A.apply(obj2,["byA"]); //顯示func2-byA,其中[“byA”]是僅有一個(gè)元素的數(shù)組,下同 obj2.B.apply(obj1,["byB"]); //顯示func1-byB obj1.A.call(obj2,"byA"); //顯示func2-byA obj2.B.call(obj1,"byB"); //顯示func1-byB |
function sum(a,b){ return a+b; } alert(sum.length); |
<script language="JavaScript" type="text/javascript"> <!-- //創(chuàng)建兩個(gè)空對(duì)象 var obj1=new Object(); var obj2=new Object(); //給兩個(gè)對(duì)象都添加屬性p,并分別等于1和2 obj1.p=1; obj2.p=2; //給obj1添加方法,用于顯示p的值 obj1.getP=function(){ alert(this.p); //表面上this指針指向的是obj1 } //調(diào)用obj1的getP方法 obj1.getP(); //使obj2的getP方法等于obj1的getP方法 obj2.getP=obj1.getP; //調(diào)用obj2的getP方法 obj2.getP(); //--> </script> |
var namespace1=new Object(); namespace1.class1=function(){ //初始化對(duì)象的代碼 } var obj1=new namespace1.class1(); |
obj1.getP=function(){ alert(this.p); //表面上this指針指向的是obj1 } |
標(biāo)簽:威海 伊春 撫州 晉城 銅川 崇左 西藏 深圳
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《AJAX入門之深入理解JavaScript中的函數(shù)》,本文關(guān)鍵詞 AJAX,入門,之,深入,理解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。