課程
/前端開發
/JavaScript
/JS實現“旋轉木馬”幻燈片效果
為什么是用函數表達式寫Carouset,?
是為了模塊化??
Caroust 是一個實例? ?init 方法是添加到實例上的?
init方法 會不會被所有實例繼承 ?每一個實例都會創建一個init對象嗎 ?
2015-10-20
源自:JS實現“旋轉木馬”幻燈片效果 2-1
正在回答
聲明函數的兩種方式:
function A(){}
var A = function(){};
第一種方式的聲明無論函數放在什么地方,運行時都會優先執行。第二種在運行時是按順序執行。
我們可以測試一下:
alert(typeof?a);???//?undefined???因為是順序執行,此時a還未定義 var?a?=?function(){?alert('a')};
alert(typeof?a);???//?function???因為function聲明被優先執行,此時a為function function?a(){?}
明白了兩者的區別,那么哪種寫法更好呢?假設我們的項目是多人在開發,我們都約定用第一種方式寫函數。當兩個人分別在各自的js文件定義了一個function A, 這兩個文件被合并后加載到頁面上,那么最后只會運行一個人寫的。
//?文件1 function?A(){?alert('A');} A();??//?AA //?文件2 function?A()?{?alert('AA');?} A();???//?AA
我們發現兩處都輸出了 AA, 而不是我們預期的。那么我們改為第二種寫法就沒問題了:
//?文件1 var?A?=?function?(){?alert('A');} A();??//?A //?文件2 var?A?=?function?()?{?alert('AA');?} A();??//?AA
不知道這么講你明白沒有,希望對你有幫助。
Carouset被定義為一個類,不是實例。致于init方法是類的靜態方法,不會被實例調用的。只有在類中通過
this.method = function(){};
或者:
Carouset.prototype.method = function(){};
這樣聲明的方法才可以被實例調用。
var?A?=?function?(){?this.name?=?'A';?}?//聲明類,屬性name A.init?=?function(){??return?new?this;?};?//聲明類靜態方法init,?這里的this是類本身而非實例 var?a?=?new?A; alert(typeof?A.init);??//function alert(typeof?a.init);??//undefined alert(a.name);??//?A A.prototype.getName?=?function(){return?this.name;?}; alert(a.getName());?//?A
舉報
JS組件封裝,制作一個圖片幻燈片切換效果,一起學習吧
1 回答為什么都是用的dom對象的方式
2 回答為什么老師這樣寫this.setSettingValue();而不是寫this.prototype.setSettingValue();
2 回答為什么要使用prototype?
3 回答window["Carousel"]=Carousel;怎么理解?為什么要這樣寫?
1 回答為什么animate里的Flag不能用self,self指向window?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-12-25
聲明函數的兩種方式:
function A(){}
var A = function(){};
第一種方式的聲明無論函數放在什么地方,運行時都會優先執行。第二種在運行時是按順序執行。
我們可以測試一下:
明白了兩者的區別,那么哪種寫法更好呢?假設我們的項目是多人在開發,我們都約定用第一種方式寫函數。當兩個人分別在各自的js文件定義了一個function A, 這兩個文件被合并后加載到頁面上,那么最后只會運行一個人寫的。
我們發現兩處都輸出了 AA, 而不是我們預期的。那么我們改為第二種寫法就沒問題了:
不知道這么講你明白沒有,希望對你有幫助。
Carouset被定義為一個類,不是實例。致于init方法是類的靜態方法,不會被實例調用的。只有在類中通過
this.method = function(){};
或者:
Carouset.prototype.method = function(){};
這樣聲明的方法才可以被實例調用。