JS定義函式淺析(一)
一、JS兩種定義函式方式及區別
二、function定義函式的4種方法
1.最基本的作為一個本本分分的函式宣告使用。
複製程式碼程式碼如下:
複製程式碼程式碼如下:
function func(){}
或
var func=function(){};
2.作為一個類構造器使用:
複製程式碼程式碼如下:
複製程式碼程式碼如下:
function class(){}
class.prototype={};
var item=new class();
3.作為閉包使用:
複製程式碼程式碼如下:
複製程式碼程式碼如下:
(function(){
//獨立作用域
})();
4.可以作為選擇器使用:
複製程式碼程式碼如下:
複製程式碼程式碼如下:
var addEvent=new function(){
if(!-[1,]) return function(elem,type,func){attachEvent(elem,'on'+type,func);};
else return function(elem,type,func){addEventListener(elem,type,func,false);}
};//避免了重複判斷
三、JS函式的定義與呼叫方法
JS函式呼叫的四種方法:方法呼叫模式,函式呼叫模式,構造器呼叫模式,apply,call呼叫模式
1.方法呼叫模式:
先定義一個物件,然後在物件的屬性中定義方法,通過myobject.property來執行方法,this即指當前的myobject
物件。
var blogInfo={
blogId:123,
blogName:"werwr",
showBlog:function(){alert(this.blogId);}
};
blogInfo.showBlog();
2.函式呼叫模式
定義一個函式,設定一個變數名儲存函式,這時this指向到window物件。
var myfunc = function(a,b){
return a+b;
}
alert(myfunc(3,4));
3.構造器呼叫模式
定義一個函式物件,在物件中定義屬性,在其原型物件中定義方法。在使用prototype的方法時,必須例項化該物件才能呼叫其方法。
var myfunc = function(a){
this.a = a;
};
myfunc.prototype = {
show:function(){alert(this.a);}
}
var newfunc = new myfunc("123123123");
newfunc.show();
4.apply,call呼叫模式
var myobject={};
var sum = function(a,b){
return a+b;
};
var sum2 = sum.call(myobject,10,30); //var sum2 = sum.apply(myobject,[10,30]);
alert(sum2);