JavaScript中Function函數

學識都 人氣:2.66W

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