javascript杂谈:继承

发布于 2022-10-15 05:49:48 字数 1865 浏览 21 评论 0

javascript杂谈:继承
众所周知,javascript 是基于对象的语言,没有提供继承机制,但是可以通过一些手段实现继承,而实现继承主要依靠prototype。

1.

  1. function Animal(){
  2.     //构造函数
  3.     this.color = "红色";
  4.     }
  5. Animal.prototype.run = function(){
  6.     alert("奔跑!");}function Cat(){
  7.     //构造函数}//继承方法Cat.prototype = new Animal();//添加子类实例方法Cat.prototype.eat = function(){
  8.     alert("吃鱼!");}
复制代码上面的继承是如何实现的,请看下图:

1.jpg (119.07 KB, 下载次数: 2)

下载附件

2011-05-28 15:27 上传



2.若prototype属性是引用类型,则被所有实例共享。将Animal类color属性修改成引用类型,会影响所有Animal类的实例。将Animal类和Cat类的构造方法修改一下:
  1. function Animal(){    //构造函数    this.color = ["红色","绿色","蓝色"];    } function Cat(){    //构造函数    Animal.call(this);}
复制代码代码分析,请看下图:

语句Animal.call(this)为类Cat实例设置color属性,实例属性对于单元实例对象是独立的,所以解决了引用类型属性共享问题。(实例中color属性屏蔽prototype对象中保存的color属性)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文