1. 程式人生 > >JS定義函式淺析(一)

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);