JavaScript之组合继承(伪经典继承)
2013-03-15 09:50
148 查看
今天在了解javascript的组合继承时,发现此种继承方式结合了原型链和借用构造函数的方式来实现的,下面对此种继承的方式记录下来,首先来了解实现组合继承的过程。
原文地址:http://handyxuefeng.blog.163.com/blog/static/45452172201162014851622/
<script type="text/javascript"> function parent(name) //定义父类 { this.name=name; //parent实例属性name this.color=["red","blue","yellow"]; //parent实例属性color,这个属性值得注意的地方是它的类型是引用类型的 } parent.prototype.world="Hellow"; parent.prototype.num_arr=[1,2,3,4]; //在原型prototype上添加的属性,在原型prototype对象上添加的属性和方法都是可以共享的 parent.prototype.say=function(){alert('parent_say');} //在原型prototype上添加的方法 function son(name,age) //定义子类 { /* parent.call(this,name); 调用父类构造函数 通过借用构造函数的方式来专门实现继承属性 ,主要是继承实例属性name,age,color ,而不是父类的原型上添加的属性num_arr ,从而做到每个实例对象(下面实例化的对象s1,s2)都有自己的私有属性name,age,color ,这样在修改各自的私有属性时互不影响,特别是在修改引用类型的属性color的时候. */ parent.call(this,name); this.age=age; //son的实例属性age } /* son.prototype=new parent("jackie"); 原型继承 通过原型链的形式来是实现继承是一种常见的方式,在应用中,如果实例对象要共享某个方法或属性时, 则通过在prototype对象上进行添加属性和方法是实现共享引用类型属性(num_arr)和方法(say)的一种最佳方式 */ son.prototype=new parent("jackie"); var s1=new son("lily",34); var s2=new son("kate",28); s1.color.push("black"); //这是s1对象对parent.color实例属性进行了操作,但是却不会影响到s2.color alert("s1.color="+s1.color+"\ns2.color="+s2.color); /* 这是上面的输出结果 s1.color=red,blue,yellow,black s2.color=red,blue,yellow */ s1.num_arr.push(5); alert("s1.num_arr="+s1.num_arr+"\ns2.num_arr="+s2.num_arr); /* 这时对parent.prototype上的引用类型属性(num_arr)进行操作时,会影响到s2.num_arr ,原因就是prototype对象添加的属性都是共享的,尤其是添加的引用类型的属性 s1.num_arr=1,2,3,4,5 s2.num_arr=1,2,3,4,5 */ s1.world="China"; alert("s1.world="+s1.world+"\ns2.world="+s2.world); /* 这是s1对象对parent.prototype对象的非引用类型属性world进行操作,这时也不会影响到s2.world 输出结果为: s1.world=China s2.world=Hellow */ </script>
原文地址:http://handyxuefeng.blog.163.com/blog/static/45452172201162014851622/
相关文章推荐
- 【JavaScript学习】面向对象的程序设计(5):组合继承(伪经典继承)
- JavaScript面向对象(4)——最佳继承模式(深拷贝、多重继承、构造器借用、组合寄生式继承)
- javascript中最常用的继承模式 组合继承
- JavaScript面向对象-基于原型链和函数伪装组合的方式实现继承
- JavaScript中的继承之组合继承
- javascript的构造函数,原型和以其实现的经典继承
- js(javascript)中的原型继承(经典继承)
- javascript继承,原型链继承、借用构造函数、组合继承
- (非常经典)Javascript继承机制的设计思想
- javascript继承之组合继承(三)
- 5.javascript 对象继承 ---组合模式
- javaScript面向对象继承方法经典实现
- 平凡创造的经典--组合与继承
- Javascript 组合继承 原型链继承 寄生继承
- javascript通过组合实现继承
- JavaScript中继承(三) -- 组合继承
- JavaScript学习笔记(三十二) 经典继承模式二-借用构造方法
- Javascript之对象组合继承
- javascript中的继承-组合继承