蕪湖不蕪
2018-10-09 17:15:17
就以 AMD 的模塊為例:define(function () { var test = { val: 233, getVal: function () { return this.val; }, setVal: function () { this.val = 'abc'; } }; return test;});上邊的做法是不是不好 不應(yīng)該整個返回整個 test 對象 這樣外部是可以直接操作 val 屬性的 正確的做法是什么?~我看大家都 return {}; 一個對象回去 這是為什么 不能直接 return function (){}; 回去嗎 還是說返回對象的話是方便后續(xù)擴(kuò)展~如果我想在模塊里寫一個面向?qū)ο蟮脑?最終不還是得返回這個對象以供外部去 new 嗎 那這么說面向?qū)ο髮懛J(rèn)就是公開的唄~能列舉幾點模塊的優(yōu)點和弊端嗎 如果我都暴露出去了 原生的寫法就比如面向?qū)ο?不就默認(rèn)都是公開的嗎~
1 回答

慕桂英546537
TA貢獻(xiàn)1848條經(jīng)驗 獲得超10個贊
上面那個做法等于沒有用模塊……js的私有變量都是用閉包來模擬的,你的上面那個改成這樣就可以了。
define(function () {
var val = 123;
var test = {
getVal: function () {
return val;
},
setVal: function () {
val = 'abc';
}
};
return test;
});
這樣的話,外面是無法直接訪問到變量val
的,只能通過你對外暴露的兩個函數(shù):getVal
和setVal
來進(jìn)行訪問和修改。
返回對象的原因一個就是你說的方便擴(kuò)展,還有一個就是對外暴露的api通常不止一個,除了對象還有別的玩意兒能實現(xiàn)嗎?
至于return function (){};
這是什么……沒看懂。
添加回答
舉報
0/150
提交
取消