javascript - 這兩種JS寫法有什麼差別
扔个三星炸死你
扔个三星炸死你 2017-07-05 10:54:15
0
6
974
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 這個函數
上面兩種寫法,是把要暴露的方法掛在新的變數中比較好,還是直接掛在函數名稱下比較好?

扔个三星炸死你
扔个三星炸死你

全部回覆(6)
巴扎黑

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

漂亮男人

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

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

ringa_lee

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

阿神

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

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

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

给我你的怀抱

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

  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())
phpcn_u1582

你第二種方法可以實現

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

這樣的呼叫? 我很懷疑

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板