首頁 >web前端 >js教程 >JavaScript中Function函數與Object物件的關係式_javascript技巧

JavaScript中Function函數與Object物件的關係式_javascript技巧

WBOY
WBOY原創
2016-05-16 15:25:021338瀏覽

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

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

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

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

function fn(){}
var obj = {}
console.log(fn instanceof Function)//true
console.log(obj instanceof Object)//true
console.log(fn instanceof Object)//true
console.log(obj instanceof Function)//false

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

我們再來看一個程式碼

console.log(Function instanceof Object); // true
console.log(Object instanceof Function); // true

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

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

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

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

ps:$(function(){})和$(document).ready(function(){})

document.ready與onload的差別-JavaScript文件載入完成事件

頁面載入完成有兩種事件

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

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

用jQ的人很多人都是這麼開始寫腳本的:

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

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

$(document).ready(function(){
//do something
})
//或者下面这个方法,jQuer的默认参数是:“document”;
$().ready(function(){
//do something
})

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

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

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

1.window.onload法

⑴執行時機:

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

window.onload=function(){ $(window).load(function(){
//编写代码 等价于 //编写代码
} });

⑵多次使用:

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

function one()
{ alert("one");
} 
function two()
{ alert("two"); 
}
window.onload=one; 
window.onload=two; //运行代码后只有 two 

2.$(document).ready()方法

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

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

⑵多次使用:

function one(){ alert("one"); 
} 
function two(){ alert("two"); 
} $(document).ready(function()
{ one(); }); 
$(document).ready(function()
{ two(); 
}); //运行代码后 //先是:one //先是:two
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn