这种模式避免了原型链和构造函数持续的缺点,融合了他们的长处,是最常用的一种持续模式。
原型式持续
借助原许可以基于已有的对象创建新对象,同时还不必是以创建自定义类型。
- function object(o) {
- function F() {}
- F.prototype = o
- return new F()
- }
所以instance指向SubType的原型,SubType的原型又指向SuperType的原型,继而在instance在调用getSuperValue()办法的时刻,会顺着这条链一向往上找。
在object函数内部,先创建一个临时性的构造函数,然后将传入的对象作为这个构造函数的原型,最后返回这个临时类型的一个新实例。
本质上来说,object对传入个中的对象履行了一次浅复制。
- var person = {
- name: 'Jiang',
- friends: ['Shelby', 'Court']
- }
- var anotherPerson = object(person)
- console.log(anotherPerson.friends) // ['Shelby', 'Court']
这种模式要去你必须有一个对象作为另一个对象的基本。
在这个例子中,person作为另一个对象的基本,把person传入object中,该函数就会返回一个新的对象。
这个新对象将person作为原型,所以它的原型中就包含一个根本类型和一个引用类型。
所以意味着如不雅还有别的一个对象接洽关系了person,anotherPerson修改数组friends的时刻,也会表如今这个对象中。
推荐阅读
在本文中,我们将解释 Linux 体系中最关键的治理义务之一——关于体系 / CPU 的负载(load)和平均负载(Load average)的机能监控。起首来看所有的类 UNIX 体系中两个重要的表述:>>>详细阅读
本文标题:JavaScript六种继承方式
地址:http://www.17bianji.com/lsqh/35904.html
1/2 1