javascript杂谈:继承
javascript杂谈:继承
众所周知,javascript 是基于对象的语言,没有提供继承机制,但是可以通过一些手段实现继承,而实现继承主要依靠prototype。
1.
2.若prototype属性是引用类型,则被所有实例共享。将Animal类color属性修改成引用类型,会影响所有Animal类的实例。将Animal类和Cat类的构造方法修改一下:
语句Animal.call(this)为类Cat实例设置color属性,实例属性对于单元实例对象是独立的,所以解决了引用类型属性共享问题。(实例中color属性屏蔽prototype对象中保存的color属性)
众所周知,javascript 是基于对象的语言,没有提供继承机制,但是可以通过一些手段实现继承,而实现继承主要依靠prototype。
1.
- function Animal(){
- //构造函数
- this.color = "红色";
- }
- Animal.prototype.run = function(){
- alert("奔跑!");}function Cat(){
- //构造函数}//继承方法Cat.prototype = new Animal();//添加子类实例方法Cat.prototype.eat = function(){
- alert("吃鱼!");}
1.jpg (119.07 KB, 下载次数: 2)
2.若prototype属性是引用类型,则被所有实例共享。将Animal类color属性修改成引用类型,会影响所有Animal类的实例。将Animal类和Cat类的构造方法修改一下:
- function Animal(){ //构造函数 this.color = ["红色","绿色","蓝色"]; } function Cat(){ //构造函数 Animal.call(this);}
语句Animal.call(this)为类Cat实例设置color属性,实例属性对于单元实例对象是独立的,所以解决了引用类型属性共享问题。(实例中color属性屏蔽prototype对象中保存的color属性)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论