JavaScript中Function函數(shù)與Object對(duì)象的關(guān)系
Function是javascript里最常用的一個(gè)概念,javascript里的function是最容易入手的一個(gè)功能,但它也是javascript最難理解最難掌握的一個(gè)概念。
今天我們來嘗試?yán)斫釬unction和Object.因?yàn)檫@個(gè)里面有些人前期可能會(huì)搞糊涂.他們之間到底是什么關(guān)系.當(dāng)然也不除外當(dāng)初的我.
注意:官方定義: 在Javascript中,每一個(gè)函數(shù)實(shí)際上都是一個(gè)函數(shù)對(duì)象.
我們先來看最簡單的兩個(gè)代碼,也是最容易理解的.
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
前面兩個(gè)打印的效果,大家都容易理解.后面 fn instanceof Object 是為true.這里也是一樣,從函數(shù)的定義來說: 在javascript中一切函數(shù)實(shí)際都是函數(shù)對(duì)象. 所以為true就不奇怪了.obj instanceof Function 為false,當(dāng)然不奇怪了.因?yàn)樗且粋€(gè)對(duì)象,不是函數(shù).
我們?cè)賮砜匆粋€(gè)代碼
console.log(Function instanceof Object); // true console.log(Object instanceof Function); // true
代碼很簡單.運(yùn)行結(jié)構(gòu)兩個(gè)都是為true,為什么呢? 第一個(gè)用函數(shù)的定義來說,(javascript中函數(shù)實(shí)際也是一個(gè)函數(shù)對(duì)象),當(dāng)然為true,那第二個(gè)呢?對(duì)象也是函數(shù)?
Object也是函數(shù).因?yàn)镺bject的結(jié)構(gòu)是function Object(){native code}.
這種形式,很清晰的就是聲明的一個(gè)Object函數(shù),當(dāng)然就是函數(shù)了,所以兩個(gè)都是為true.
他們兩個(gè)Function和Object函數(shù)實(shí)現(xiàn)代碼,那當(dāng)然是不一樣了.他們是怎么實(shí)現(xiàn)的,那我們就不去詳細(xì)琢磨了,如果想琢磨的,就可以了解瀏覽器的相關(guān)知識(shí)了.
ps:$(function(){})和$(document).ready(function(){})
document.ready和onload的區(qū)別——JavaScript文檔加載完成事件
頁面加載完成有兩種事件
一是ready,表示文檔結(jié)構(gòu)已經(jīng)加載完成(不包含圖片等非文字媒體文件)
二是onload,指示頁面包含圖片等文件在內(nèi)的所有元素都加載完成。
用jQ的人很多人都是這么開始寫腳本的:
$(function(){
// do something
});
其實(shí)這個(gè)就是jq ready()的簡寫,他等價(jià)于:
$(document).ready(function(){
//do something
})
//或者下面這個(gè)方法,jQuer的默認(rèn)參數(shù)是:“document”;
$().ready(function(){
//do something
})
這個(gè)就是jq ready()的方法就是Dom Ready,他的作用或者意義就是:在DOM加載完成后就可以可以對(duì)DOM進(jìn)行操作。
一般情況先一個(gè)頁面響應(yīng)加載的順序是:域名解析-加載html-加載js和css-加載圖片等其他信息。
那么Dom Ready應(yīng)該在“加載js和css”和“加載圖片等其他信息”之間,就可以操作Dom了。
1.window.onload方法
⑴執(zhí)行時(shí)機(jī):
在網(wǎng)頁中所有元素(包括元素的所有關(guān)聯(lián)文件)完全加載到瀏覽器后才執(zhí)行,即JavaScript 此時(shí)可以訪問網(wǎng)頁中的所有元素。
window.onload=function(){ $(window).load(function(){
//編寫代碼 等價(jià)于 //編寫代碼
} });
⑵多次使用:
JavaScript的onload事件一次只能保存對(duì)一個(gè)函數(shù)的引用,他會(huì)自動(dòng)用最后面的函數(shù)覆蓋前面的函數(shù)。
function one()
{ alert("one");
}
function two()
{ alert("two");
}
window.onload=one;
window.onload=two; //運(yùn)行代碼后只有 two
2.$(document).ready()方法
⑴執(zhí)行時(shí)機(jī):在DOM完全就緒時(shí)就可以被調(diào)用。(這并不意味著這些元素關(guān)聯(lián)的文件都已經(jīng)下載完畢)
舉個(gè)例子:$(document).ready()方法明知要DOM就緒就可以操作了,不需要等待所有圖片下載完畢。
⑵多次使用:
function one(){ alert("one");
}
function two(){ alert("two");
} $(document).ready(function()
{ one(); });
$(document).ready(function()
{ two();
}); //運(yùn)行代碼后 //先是:one //先是:two
相關(guān)文章
通過button將form表單的數(shù)據(jù)提交到action層的實(shí)例
下面小編就為大家?guī)硪黄ㄟ^button將form表單的數(shù)據(jù)提交到action層的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09
前端實(shí)現(xiàn)下載文件(包含壓縮包下載)方式詳細(xì)總結(jié)
這篇文章主要給大家介紹了關(guān)于前端實(shí)現(xiàn)下載文件(包含壓縮包下載)方式的相關(guān)資料,這段時(shí)間項(xiàng)目需要下載文件,所以這里給大家總結(jié)下,需要的朋友可以參考下2023-09-09
JavaScript讀取中文cookie時(shí)的亂碼問題的解決方法
讀取中文cookie時(shí)出現(xiàn)亂碼,下面是具體的解決方法,大家以后使用過程中,盡量不要用中文。2009-10-10
Bootstrap開發(fā)實(shí)戰(zhàn)之響應(yīng)式輪播圖
這篇文章主要為大家詳細(xì)介紹了Bootstrap開發(fā)實(shí)戰(zhàn)之響應(yīng)式輪播圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06
JavaScript統(tǒng)計(jì)字符串中每個(gè)字符出現(xiàn)次數(shù)完整實(shí)例
這篇文章主要介紹了JavaScript統(tǒng)計(jì)字符串中每個(gè)字符出現(xiàn)次數(shù)的方法,以完整實(shí)例形式分析了JavaScript針對(duì)字符串中字符的遍歷操作相關(guān)技巧,需要的朋友可以參考下2016-01-01

