zoukankan      html  css  js  c++  java
  • javascript中的类方法、构造方法、原型方法的对比

    如果你已经接触js很久了,那么应该可以看看我总结的是否正确,如果你刚开始学习,那么通过我的总结,你可以更快的区别他们,记得我刚接触js时,这一块反正是模糊了很久!

    1,长相的区别:

    1  function Class(){   //声明一个类
    2     this.constructMethod = function(){};  //添加构造构造方法
    3 };
    4  Class.classcMethod = function(){}; //添加类方法 
    5 Class.prototype.protocMethod=function(){};//添加原型方法

    2,用法的区别:

    1  Class.classMethod();//类方法直接调用
    2  var instance = new Class();
    3  instance.constructMethod();//构造方法实例才能调用
    4  instance.protoMethod();//原型方法实例才能调用

    3,性能上的区别:

           A类方法在内存中只会有一份,因为它只属于类本身,在实际中,我们一般不会用到类方法。写出来主要是让你知道它而已。

           B构造方法和原型方法都是实例的,但是构造方法会在每一次new Class()时,都在内存中产生一个新的副本。通常这种方法我们用在实例间的不同之处。每个实例的构造方法互不影响。但是显然,它又占据内存了。原型方法就正好相反,它不会随着new Class()时

             产生新的副本,它在内存中也只有一份。可以实现实例间的共享。同时也节约了内存。

         综上:你在开发时,一般不会用到类方法,将有共性的方法做成原型方法,将有个性的方法做成构造方法。

    4,以上谈到的构造方法,在实际项目中用还可以将它转移到实例上,即给实例添加方法,因为通常我们只在类的构造函数里放一些属性成员,而不是方法。见下:

     

    1  function Class(){};
    2 var instance = new Class();
    3  instance.instanceFn=function(){};//添加实例方法

             开心一刻:

  • 相关阅读:
    php面向对象 小题记
    php设计模式 Composite (组合模式)
    php设计模式 FlyWeight (享元模式)
    优化 PHP 代码的 40 条建议
    小试QueryPath,一个实现了不少jQuery接口的PHP类库
    PHP处理提交的JSON数据
    web test automation test / QTP / IBM RFT / Selenium IDE / IOS appium / AU3
    web test LoadRunner error list / error log
    web test LoadRunner tomcat / websphere
    OS + Linux/Unix download tools curl / wget
  • 原文地址:https://www.cnblogs.com/wenber/p/3636607.html
Copyright © 2011-2022 走看看