javascript - 方法要用到一個外部的數據 那么是優先選擇當成參數傳過去 還是把數據存成相對當前作用域來說全局的變量~
問題描述
var test = { init: function () {var data = $rootScope.test;if(data) { …… this.method(data);} },method: function (data) {console.log(data); }};
還是
var test = { data: $rootScope.test,init: function () {if(this.data) { …… this.method();} },method: function () {console.log(this.data); }};
哪種方式是最佳實踐
如果第一種方式要傳遞的層級過多怎么辦 比如開始是 init 調 method 傳過去 之后有 method[n] 種 執行順序是 init -> method -> method2 -> method3 這樣的 要一級一級傳嗎……
還有就是兩種方法那種性能高些呢 第二種每次取值都相當于取對象的屬性 表象上直接傳參性能會跟憂些?~
問題解答
回答1:傳遞,全局變量少用
回答2:你的例子里不算全局變量!
掛在對象的屬性上,不會影響到方法內部變量的使用!也不會污染作用域!
回答3:你這里實現的不是全局變量,只是掛在到了對象的屬性上,還有這里何必要申明一個變量呢,并沒有看到你實際操作這個data,如果只是想引用一下值得話,那么直接用$rootScope.test不就好了?
相關文章:
1. mysql 查詢身份證號字段值有效的數據2. python - 爬蟲模擬登錄后,爬取csdn后臺文章列表遇到的問題3. mysql - 把一個表中的數據count更新到另一個表里?4. javascript - 彈出一個子窗口,操作之后關閉,主窗口會得到相應的響應,例如網站的某些登錄界面,django后臺的管理等,這是怎么實現的呢?5. 視頻文件不能播放,怎么辦?6. 請教使用PDO連接MSSQL數據庫插入是亂碼問題?7. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處8. python bottle跑起來以后,定時執行的任務為什么每次都重復(多)執行一次?9. android - 分享到微信,如何快速轉換成字節數組10. visual-studio - Python OpenCV: 奇怪的自動補全問題
