javascript杂谈:继承

本文介绍JavaScript中如何通过原型链实现继承,并探讨了构造函数和prototype属性在继承机制中的作用。此外,还讨论了引用类型属性共享的问题及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1.

function Animal()
{
//构造函数
this.color = "红色";
}

Animal.prototype.run = function()
{
alert("奔跑!");
}

function Cat()
{
//构造函数
}

//继承方法
Cat.prototype = new Animal();

//添加子类实例方法
Cat.prototype.eat = function()
{
alert("吃鱼!");
}

上面的继承是如何实现的,请看下图:

继承2

2.若prototype属性是引用类型,则被所有实例共享。将Animal类color属性修改成引用类型,会影响所有Animal类的实例。将Animal类和Cat类的构造方法修改一下:

function Animal()
{
    //构造函数
    this.color = ["红色","绿色","蓝色"];    
}
 
function Cat()
{
    //构造函数
    Animal.call(this);
}
代码分析,请看下图:
继承3
语句Animal.call( this)为类Cat实例设置color属性,实例属性对于单元实例对象是独立的,所以解决了引用类型属性共享问题。( 实例中color属性屏蔽prototype对象中保存的color属性

转载于:https://www.cnblogs.com/guangzi/archive/2011/05/27/2060137.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值