javascript杂谈:继承
众所周知,javascript 是基于对象的语言,没有提供继承机制,但是可以通过一些手段实现继承,而实现继承主要依靠prototype。
1.
function Animal()
{
//构造函数
this.color = "红色";
}
Animal.prototype.run = function()
{
alert("奔跑!");
}
function Cat()
{
//构造函数
}
//继承方法
Cat.prototype = new Animal();
//添加子类实例方法
Cat.prototype.eat = function()
{
alert("吃鱼!");
}
上面的继承是如何实现的,请看下图:
2.若prototype属性是引用类型,则被所有实例共享。将Animal类color属性修改成引用类型,会影响所有Animal类的实例。将Animal类和Cat类的构造方法修改一下:
function Animal()
{
//构造函数
this.color = ["红色","绿色","蓝色"];
}
function Cat()
{
//构造函数
Animal.call(this);
}
代码分析,请看下图:
语句Animal.call(this)为类Cat实例设置color属性,实例属性对于单元实例对象是独立的,所以解决了引用类型属性共享问题。(实例中color属性屏蔽prototype对象中保存的color属性)
这是我第一次写博客,语文成绩一向不好,作文分数老是上不去,请大家多多包含!!!!

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架