首頁  >  問答  >  主體

javascript - 這兩種JS寫法有什麼差別

function cs() {
    var _cs = {};    
    _cs .open_change_customer_p = function (url, url_param) {
        console.log(url);
        console.log(url_param);
        //do something
        ...
        ...
        block_enter_presss();
    };
    
    function block_enter_presss() {
        /**屏蔽bootstrap搜索框按enter会刷新,搜索框响应enter键 */
    }
    return _cs ;
}
function cs() {
    cs .open_change_customer_p = function (url, url_param) {
        console.log(url);
        console.log(url_param);
        //do something
        ...
        ...
        block_enter_presss();
    };
    
    function block_enter_presss() {
        /**屏蔽bootstrap搜索框按enter会刷新,搜索框响应enter键 */
    }
    return cs ;
}

補充內容:
我是在網頁上透過
var a=new cs();
a.open_change_customer_p ();
來使用。
然後cs只暴露open_change_customer_p 這個函數
上面兩種寫法,是把要暴露的方法掛在新的變數中比較好,還是直接掛在函數名稱下比較好?

扔个三星炸死你扔个三星炸死你2663 天前951

全部回覆(6)我來回復

  • 巴扎黑

    巴扎黑2017-07-05 10:56:15

    前面那種我見得比較多,後面那種寫法是什麼鬼。 。

    回覆
    0
  • 漂亮男人

    漂亮男人2017-07-05 10:56:15

    第二種是不是這樣
    _cs.open_change_customer_p = function (url, url_param){......}

    這兩種的區別就是,第二種這種方法可以被刪除,第一種用var 定義的不能被刪除,除此以外,似乎沒什麼區別了,看個人習慣了,第一種可讀性可能會好一點

    回覆
    0
  • ringa_lee

    ringa_lee2017-07-05 10:56:15

    靜態方法為什麼不抽出來單獨寫一個函數,而要每次都新建?

    回覆
    0
  • 阿神

    阿神2017-07-05 10:56:15

    ...第一種用法:
    var cs1 = cs();
    var cs2 = cs();
    cs1 和cs2 是兩個不同的物件, 指向不同的記憶體空間
    而第二種會指向同一個空間,就是cs函數本身...
    會出現的問題就是你聲明了倆變數,改變其中一個,另外一個的值跟著變(var cs1 = cs()這種用法)

    如果你是想var cs1 = new cs()的話, 第二種總是控制的是cs函數本身呀...那裡的cs應該換成this

    第一種好...因為第二種很奇怪...

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-07-05 10:56:15

    功能應該都是能實現相同的功能的

    1. 第一種看起來會比較舒服

    2. 第二種看起來會比較舒服

    如果你是覺得第一種那樣定義不太舒服,你可以這樣子定義

    function cs() {  
        this.open_change_customer_p = function (url, url_param) {
            console.log(url);
            console.log(url_param);
            block_enter_presss();
        };
        
        function block_enter_presss() {
            /**屏蔽bootstrap搜索框按enter会刷新,搜索框响应enter键 */
        }
    }
    console.log(new cs())

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-07-05 10:56:15

    你第二種方法可以實現

    var a=new cs();
    cs.open_change_customer_p ();

    這樣的呼叫? 我很懷疑

    回覆
    0
  • 取消回覆