作家
登录

JavaScript六种继承方式

作者: 来源: 2017-06-26 13:42:44 阅读 我要评论

// 持续办法 
  •  
  • SubType.prototype = new SuperType() 
  •  
  • SubType.prototype.constructor = SuperType 
  •  
  • SubType.prototype.sayJob = function() { 
  •  
  •   console.log(this.job) 
  •  
  •  
  • var instance1 = new SubType('Jiang''student'
  •  
  • instance1.colors.push('black'
  •  
  • console.log(instance1.colors) //["red""blue""green""black"
  •  
  • instance1.sayName() // 'Jiang' 
  •  
  • instance1.sayJob()  // 'student' 
  •  
  • var instance2 = new SubType('J''doctor'
  •  
  • console.log(instance2.colors) // //["red""blue""green"
  •  
  • instance2.sayName()  // 'J' 
  •  
  • instance2.sayJob()  // 'doctor'  
  • 这种模式避免了原型链和构造函数持续的缺点,融合了他们的长处,是最常用的一种持续模式。

    原型式持续

    借助原许可以基于已有的对象创建新对象,同时还不必是以创建自定义类型。

    1. function object(o) { 
    2.  
    3.   function F() {} 
    4.  
    5.   F.prototype = o 
    6.  
    7.   return new F() 
    8.  
    9.  

    所以instance指向SubType的原型,SubType的原型又指向SuperType的原型,继而在instance在调用getSuperValue()办法的时刻,会顺着这条链一向往上找。

    在object函数内部,先创建一个临时性的构造函数,然后将传入的对象作为这个构造函数的原型,最后返回这个临时类型的一个新实例。

    本质上来说,object对传入个中的对象履行了一次浅复制。

    1. var person = { 
    2.  
    3.   name'Jiang'
    4.  
    5.   friends: ['Shelby''Court'
    6.  
    7.  
    8. var anotherPerson = object(person) 
    9.  
    10. console.log(anotherPerson.friends)  // ['Shelby''Court' 

    这种模式要去你必须有一个对象作为另一个对象的基本。

    在这个例子中,person作为另一个对象的基本,把person传入object中,该函数就会返回一个新的对象。

    这个新对象将person作为原型,所以它的原型中就包含一个根本类型和一个引用类型。

    所以意味着如不雅还有别的一个对象接洽关系了person,anotherPerson修改数组friends的时刻,也会表如今这个对象中。


      推荐阅读

      理解Linux的平均负载和性能监控

    在本文中,我们将解释 Linux 体系中最关键的治理义务之一——关于体系 / CPU 的负载(load)和平均负载(Load average)的机能监控。起首来看所有的类 UNIX 体系中两个重要的表述:>>>详细阅读


    本文标题:JavaScript六种继承方式

    地址:http://www.17bianji.com/lsqh/35904.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)