MVC思想 & 全局變量如何變為局部變量
阿新 • • 發佈:2018-06-15
操作 怎麽 select tor 推薦 AR view 改變 sele
MVC思想 & 全局變量如何變為局部變量
1 MVC思想
VC 第一版
!function(){ var view = document.querySelector(‘xxx‘) var controller = function(view){ ..… } controller.call(null,view) }.call()
VC 第二版,添加
init
!function(){ var view = document.querySelector(‘xxx‘) var controller = { view: null, init: function(view){ this.bindEvents(). //this.bindEvents().call(this) }, bindEvents: function(){ ... … } } controller.init(view). //controller.init.call(controller,view) }.call()
MVC思想完整版
!function(){ //M 數據相關的操作,負責和server數據交互 var model = { fetch: function(){ ... }, save: function(){ ... } } //V 負責視圖展示 var view = document.querySelector(‘xxx‘) //C 負責邏輯等其他 var controller = { view: null, model: null, init: function(view,model){ this.view = view this.model = model this.bindEvents() }, bindEvents: function(){ ... } } controller.init(view,model) }.call()
2 函數中的全局變量如何變成局部變量?
全局變量之間會相互騷擾。所以在代碼中不要用全局變量。ES6之前只有函數裏面有全局變量。
- 全局變成局部變量怎麽變?
- 把代—放在一個函數如中,再.call()執行一下這個函數?行不行?
- 不行—樣的話函數名也是一個全局變量(全局函數)。
- 那麽—掉函數名把函數變成一個匿名函數?再function(){}.call()立即執行,這樣 可以,但是Chrome報錯,語法錯誤。
- 全局變量變局部變量的方法:
- 方法一:!function(){}.call( )
(前面加+、-、!都可以,這種方法會改變函數的返回值,但是不在乎這個函數的返回值的話加個取反沒有關系) - 方法二:(function(){}).call( )
(用括號把函數括起來。但是不推薦這種做法,因為如果(函數)的前一行被加上一個xxx,很容易被瀏覽器誤解為是在xxx()。)
- 方法一:!function(){}.call( )
MVC思想 & 全局變量如何變為局部變量