美文网首页
js中类定义函数时用prototype与不用的区别

js中类定义函数时用prototype与不用的区别

作者: 开车去环游世界 | 来源:发表于2019-12-24 15:16 被阅读0次

    举个例子:

    function FFFFuck( name ) {
        this.name = name;
    }
    
    // 不加prototype的情况
    FFFFuck.do11 = function( msg ) {
        console.log( `do11: ${msg}` );
    };
    
    // 添加prototype的情况
    FFFFuck.prototype.do22 = function( msg ) {
        console.log( `do22: ${msg}` );
    };
    

    上面代码添加与不添加 prototype 有什么区别呢?下面我们来测试这个实例:

    let t1 = new FFFFuck( '摸鱼' ); 
    // t1.do11();   //调用出错 
    FFFFuck.do11( '睡觉' ); 
    
    let t2 = new FFFFuck( '吃饭' ); 
    t2.do22( '打豆豆' );
    // FFFFuck.do2( '没事做' );  //调用出错 
    

    经过测试发现,没有使用 prototype 的方法相当于类的静态方法,因此可以这样调用,FFFFuck.do11( '睡觉' ) ;但如果 new 后才能使用调用就会出错,t1.do11()

    相反,使用 prototype 的方法相当于类的实例方法,需要 new 后才能使用;但如果直接调用,FFFFuck.do2( '没事做' ),这样就会出错

    结论:

    • 使用 prototype 定义的方法相当于类的实例方法,必须 new 后才能使用
    • 不使用 prototype 定义的方法相当于类的静态方法,可以直接使用,不需要 new

    相关文章

      网友评论

          本文标题:js中类定义函数时用prototype与不用的区别

          本文链接:https://www.haomeiwen.com/subject/sscfoctx.html