一文帶你解讀JavaScript的引用類型和函數(shù)對(duì)象
前言
相信做網(wǎng)站對(duì)JavaScript再熟悉不過(guò)了,它是一門(mén)腳本語(yǔ)言,不同于Python的是,它是一門(mén)瀏覽器腳本語(yǔ)言,而Python則是服務(wù)器腳本語(yǔ)言,我們不光要會(huì)Python,還要會(huì)JavaScript,因?yàn)樗鼘?duì)做網(wǎng)頁(yè)方面是有很大作用的。
1.引用類型
相當(dāng)于Java中的類創(chuàng)建實(shí)例過(guò)程,比如我要?jiǎng)?chuàng)建個(gè)對(duì)象,可以這樣做:
- var ob = new Object();
其實(shí)它就是把JavaScript中的數(shù)據(jù)類型轉(zhuǎn)換為Java中的類來(lái)進(jìn)行操作。
2.函數(shù)對(duì)象
1).Arguments對(duì)象
這是個(gè)神奇的對(duì)象,無(wú)需指明參數(shù)就可以訪問(wèn)它,它無(wú)處不在,用好了將極大的提高你的工作效率。比如它可以檢查函數(shù)中有多少個(gè)參數(shù):
- function aa() {
- console.log(arguments.length);
- }
- aa("fsdaf",324,42.434,'42342asff');
2).Function對(duì)象
它可以十分方便的創(chuàng)建函數(shù),并且有多種方法創(chuàng)建函數(shù)。
1)).對(duì)象實(shí)例化創(chuàng)建
var ff= new function(name,age,score,表達(dá)式)
2)). 函數(shù)關(guān)鍵字創(chuàng)建
- function aa() {
- alert(111);
- }
- function aa(bb,cc) {
- alert(bb,cc);
- }
Function有一個(gè)Length屬性用來(lái)計(jì)算長(zhǎng)度:
- function aa() {
- alert(111);
- }
- aa.length
3).Constructor屬性
看到這個(gè)長(zhǎng)長(zhǎng)的東西是不是感到特別陌生,它就是我們的構(gòu)造函數(shù),我們可以對(duì)此判斷當(dāng)前實(shí)例是否屬于對(duì)象。
- var aa=new Array()
- if(aa.constructor==Array){
- console.log(11)
- }
- else{
- console.log(22)
- }
4).Prototype屬性
指對(duì)象的原型參數(shù),實(shí)例化后的對(duì)象是沒(méi)有Prototype屬性的,只有對(duì)象本身才有這個(gè)屬性。利用該屬性創(chuàng)建的變量名和值并沒(méi)有加入到實(shí)例對(duì)象中,只是創(chuàng)建了,如果你想訪問(wèn)它,可以使用:實(shí)例名.constructor.prototype來(lái)進(jìn)行訪問(wèn)。
從上面可以看出,數(shù)組的實(shí)例化對(duì)象可以創(chuàng)建任意變量并且賦值,但是它的原型卻不行,如果是數(shù)組本身那么就又可以了。而且要想訪問(wèn)原型的構(gòu)造函數(shù)還得是對(duì)象本身,最后得到的結(jié)果也就是對(duì)象本身??梢?jiàn)雖然原型和構(gòu)造函數(shù)換了個(gè)位置,但是意義完全不一樣。
5).This 對(duì)象
其實(shí)就相當(dāng)于Java中的This,Python 中的Self,可以看出它的重要性,無(wú)非就是指向一個(gè)實(shí)例對(duì)象。
3.閉包
其實(shí)就是嵌套函數(shù)。
- var aa= 10;
- function s(cc,bb) {
- function sa() {
- return cc+bb;
- }
- return sa();
- }
總結(jié)
這篇文章主要結(jié)束了JavaScript的引用類型、函數(shù)對(duì)象和閉包,下一篇文章繼續(xù)給大家分享JavaScript知識(shí),敬請(qǐng)期待!