第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

怎么理解模塊中保護(hù)私有方法只向外暴露接口~

怎么理解模塊中保護(hù)私有方法只向外暴露接口~

蕪湖不蕪 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ù):getValsetVal來進(jìn)行訪問和修改。

返回對象的原因一個就是你說的方便擴(kuò)展,還有一個就是對外暴露的api通常不止一個,除了對象還有別的玩意兒能實現(xiàn)嗎?

至于return function (){};這是什么……沒看懂。


查看完整回答
反對 回復(fù) 2018-11-17
  • 1 回答
  • 0 關(guān)注
  • 485 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號