javascript - 方法要用到一個(gè)外部的數(shù)據(jù) 那么是優(yōu)先選擇當(dāng)成參數(shù)傳過去 還是把數(shù)據(jù)存成相對(duì)當(dāng)前作用域來說全局的變量~
問題描述
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); }};
哪種方式是最佳實(shí)踐
如果第一種方式要傳遞的層級(jí)過多怎么辦 比如開始是 init 調(diào) method 傳過去 之后有 method[n] 種 執(zhí)行順序是 init -> method -> method2 -> method3 這樣的 要一級(jí)一級(jí)傳嗎……
還有就是兩種方法那種性能高些呢 第二種每次取值都相當(dāng)于取對(duì)象的屬性 表象上直接傳參性能會(huì)跟憂些?~
問題解答
回答1:傳遞,全局變量少用
回答2:你的例子里不算全局變量!
掛在對(duì)象的屬性上,不會(huì)影響到方法內(nèi)部變量的使用!也不會(huì)污染作用域!
回答3:你這里實(shí)現(xiàn)的不是全局變量,只是掛在到了對(duì)象的屬性上,還有這里何必要申明一個(gè)變量呢,并沒有看到你實(shí)際操作這個(gè)data,如果只是想引用一下值得話,那么直接用$rootScope.test不就好了?
相關(guān)文章:
1. 如何解決docker宿主機(jī)無法訪問容器中的服務(wù)?2. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個(gè)是怎么回事????3. javascript - 請(qǐng)指條明路,angular的$event,在select中卻是undefined?4. 如何修改vim插件vimwiki中Vimwiki2HTML的一些細(xì)節(jié)5. javascript - JS事件委托問題6. javascript - 關(guān)于jquery的remove()方法7. JavaScript中怎么理解=、==和===8. java - Spring事務(wù)回滾問題9. javascript - vue.js如何遞歸渲染組件.10. mongodb - Mongo java驅(qū)動(dòng)中,有沒有封裝好的函數(shù),可以直接取到文檔中的某個(gè)具體的值,而不是一個(gè)文檔?或者有沒有方法實(shí)現(xiàn)??
