當前位置:才華齋>設計>網頁設計>

JavaScript中Function函式

網頁設計 閱讀(1.17W)

Function是javascript裡最常用的一個概念,javascript裡的function是最容易入手的一個功能,但它也是javascript最難理解最難掌握的一個概念。

JavaScript中Function函式

今天我們來嘗試理解Function和Object.因為這個裡面有些人前期可能會搞糊塗.他們之間到底是什麼關係.當然也不除外當初的我.

注意:官方定義: 在Javascript中,每一個函式實際上都是一個函式物件.

我們先來看最簡單的兩個程式碼,也是最容易理解的.

function fn(){}var obj = {}(fn instanceof Function)//(obj instanceof Object)//(fn instanceof Object)//(obj instanceof Function)//false

前面兩個列印的效果,大家都容易理解.後面 fn instanceof Object 是為true.這裡也是一樣,從函式的定義來說: 在javascript中一切函式實際都是函式物件. 所以為true就不奇怪了 instanceof Function 為false,當然不奇怪了.因為他是一個物件,不是函式.

我們再來看一個程式碼

(Function instanceof Object); // (Object instanceof Function); // true

程式碼很簡單.執行結構兩個都是為true,為什麼呢? 第一個用函式的定義來說,(javascript中函式實際也是一個函式物件),當然為true,那第二個呢?物件也是函式?

Object也是函式.因為Object的結構是function Object(){native code}.

這種形式,很清晰的就是宣告的一個Object函式,當然就是函數了,所以兩個都是為true.

他們兩個Function和Object函式實現程式碼,那當然是不一樣了.他們是怎麼實現的',那我們就不去詳細琢磨了,如果想琢磨的,就可以瞭解瀏覽器的相關知識了.

ps:$(function(){})和$(document)y(function(){})

y和onload的區別——JavaScript文件載入完成事件

頁面載入完成有兩種事件

一是ready,表示文件結構已經載入完成(不包含圖片等非文字媒體檔案)

二是onload,指示頁面包含圖片等檔案在內的所有元素都載入完成。

用jQ的人很多人都是這麼開始寫指令碼的:

$(function(){// do something});

其實這個就是jq ready()的簡寫,他等價於:

$(document)y(function(){//do something})//或者下面這個方法,jQuer的預設引數是:“document”;$()y(function(){//do something})

這個就是jq ready()的方法就是Dom Ready,他的作用或者意義就是:在DOM載入完成後就可以可以對DOM進行操作。

一般情況先一個頁面響應載入的順序是:域名解析-載入html-載入js和css-載入圖片等其他資訊。

那麼Dom Ready應該在“載入js和css”和“載入圖片等其他資訊”之間,就可以操作Dom了。

ad方法

⑴執行時機:

在網頁中所有元素(包括元素的所有關聯檔案)完全載入到瀏覽器後才執行,即JavaScript 此時可以訪問網頁中的所有元素。

ad=function(){ $(window)(function(){//編寫程式碼 等價於 //編寫程式碼} });

⑵多次使用:

JavaScript的onload事件一次只能儲存對一個函式的引用,他會自動用最後面的函式覆蓋前面的函式。

function one(){ alert("one");} function two(){ alert("two"); }ad=one; ad=two; //執行程式碼後只有 two

2.$(document)y()方法

⑴執行時機:在DOM完全就緒時就可以被呼叫。(這並不意味著這些元素關聯的檔案都已經下載完畢)

舉個例子:$(document)y()方法明知要DOM就緒就可以操作了,不需要等待所有圖片下載完畢。

⑵多次使用:

function one(){ alert("one"); } function two(){ alert("two"); } $(document)y(function(){ one(); }); $(document)y(function(){ two(); }); //執行程式碼後 //先是:one //先是:two