首页  >  问答  >  正文

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 天前948

全部回复(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
  • 取消回复