日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
你了解JavaScript中的function嗎?

Function作為Javascript的核心技術之一,清晰的理解function的機制和用法,對我們進行javascript開發(fā)非常重要.今天本人就結合自己的實踐為大家介紹一些function在javascript中的一些淺顯用法.

創(chuàng)新互聯(lián)建站成立10年來,這條路我們正越走越好,積累了技術與客戶資源,形成了良好的口碑。為客戶提供網(wǎng)站設計、做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁設計、域名注冊、網(wǎng)絡營銷、VI設計、網(wǎng)站改版、漏洞修補等服務。網(wǎng)站是否美觀、功能強大、用戶體驗好、性價比高、打開快等等,這些對于網(wǎng)站建設都非常重要,創(chuàng)新互聯(lián)建站通過對建站技術性的掌握、對創(chuàng)意設計的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。

1. Function是什么

從Javascript對function的定義, function是一個由代碼集合而成的對象.

從中我們可看出,我們可以使用向C語言中的函數(shù)那樣使用function,也可以對function進行面向?qū)ο缶幊?當然Javascript中function的強

大還不止如此.

2. 如何使用function

2.1定義

 
 
 
  1. function myfunc(param) {  
  2.     //code  

注意Javascript中的這兩個function被認為是同一個:

在運行時到底調(diào)用哪一個function取決于加載順序,后一個加載的function會覆蓋前一個.

 
 
 
  1. function func1() {return 'func1'; }  
  2. function func1(name) { return name; } 

換句話說就是,function的參數(shù)都是可選參數(shù),因此funciton的識別是不包括如參的,而函數(shù)入?yún)⑻幍穆暶魇菫榱艘梅奖阋约翱勺x性.

以上的代碼也等價于:

 
 
 
  1. function func1() {  
  2.     return arguments[0] || 'func1';  
  3. }  
  4. func();              //return 'func1'  
  5. func('function'); //return 'function' 

2.2 function當作對象

是的沒錯,在javascript中function就是對象,我們可以向使用一個對象那樣使用function.

它可以有自己的屬性和方法.有如下的一個funciton:

 
 
 
  1. function nameOf(name) {  
  2.     return name.toUpperCase();   

2.2.1 function作為對象進行賦值

 
 
 
  1. var person = person || {};  
  2. person.nameOf = nameOf;  
  3. person.nameOf('yang dong') // return "YANG DONG" 

2.2.2 定義function的屬性

看看以下的代碼, 你能從中的到什么信息:

 
 
 
  1. function nameOf() {return nameOf.blogger;}  
  2. nameOf.blogger = "YANG_DONG"; 

沒錯,function可以擁有自己的屬性.

考慮這樣一種場景, 假如我們要統(tǒng)計某個function被調(diào)用的次數(shù).那么我們有兩種方式來實現(xiàn):

1.設定一個全局變量來記錄,該funciton被調(diào)用的次數(shù),每調(diào)用一次,該變量加1:

 
 
 
  1. var globalNameOfCounter = 0;  
  2. nameOf();  
  3. globalNameOfCounter ++; 

這樣做看起來是沒有問題的,在代碼還是比較簡單的時候,它可以工作的很好,但是隨著代碼越來越復雜,維護這段邏輯的成本會直線上升.

主要是因為:globalNameOfCounter污染的global命名空間,并且破壞了代碼的封裝性.

2.使用function的屬性

看看以下代碼:

 
 
 
  1. function nameOf() {  
  2.     nameOf.counter++;  
  3.     return nameOf.blogger;  
  4. }  
  5. nameOf.blogger = “YANG_DONG"  
  6. nameOf.counter = 0;    
  7. nameOf(); //nameOf.counter = 1  
  8. nameOf(); //nameOf.counter = 2 

顯而易見,第二種方式有著很好的封裝性和維護性.function的屬性的應用還不止如此.請看下文.

2.3 function作為名字空間

Javascript不支持名字空間(本人不太理解如此強大的語言為什么不支持名字空間呢,這是為什么呢?),

不過我們依然可以使用其強大的funciton為我們支持名字空間.

從上節(jié)我們知道function可以定義自己的屬性,我們就可以利用該特性來生成名字空間.請看以下代碼:

 
 
 
  1. nameOf.getBloggerName = function() {  
  2.     return nameOf.blogger;  

此時在nameOf名字空間之下已經(jīng)包含了:blogger,counter屬性和function getBloggerName.

2.4 function作為method

在javascript中function和method其實是沒有什么本質(zhì)區(qū)別的,如果非的區(qū)分兩者的話,我想也就是this變量不同吧.

 
 
 
  1. function g() {return this;}  
  2. var local = local || {};  
  3. local.method = g; //修改this指向local  
  4. local.method();   //返回local對象  
  5. g();              //返回DOMWindow對象 

2.5 function皆為closure

在Javascript中所有的function都綁定了一個scope chain,因此它是一個保存了調(diào)用上下文的函數(shù).看看下面的實例代碼:

 
 
 
  1. var variable = 'global';  
  2. function getVariable(){  
  3.     var variable = 'local',  
  4.     func = function() {  
  5.         return variable;  
  6.     };  
  7.     return func;  
  8. }  
  9. getVariable()();  //return local; 

當func被調(diào)用的時候,它所取的varible的值是調(diào)用上下文中的變量而并非與之同名的全局變量.

3. 總結

如果用一句話概括今天對funciton的介紹,那么我想應該是: function是可以被調(diào)用執(zhí)行的代碼集對象.

以上是function的一些應用場景,當然它還不止這些.

比如: function作為構造函數(shù)(也就是funciton作為類),繼承等.

原文:http://www.cnblogs.com/yangdong/archive/2012/02/05/function-in-javascript-0.html


本文名稱:你了解JavaScript中的function嗎?
地址分享:http://m.5511xx.com/article/cohjogj.html