javascript面向对象编程子类如何继承父类分析?
在javascript面向对象中 怎样能使子类继承父类?我这边可以用两种常见的方式!一:构造函数继承 二:原型(prototype)模式继承
一:构造函数模式实现继承:假如页面上有animal函数 和 cat函数 那么我怎么样能让cat函数继承与animal函数呢?假如页面有如下两个函数!!
function animal(){
this.special = "动物";
}
function cat(name,age){
animal.apply(this,arguments) //用apply或call就可以实现子类继承父类 这样调用父类就可以了!!!
this.name = name;
this.age = age;
}
我们可以测试下 :
var obj = new cat("mao",11);
console.log(obj.special ); 我们在火狐firebug下 可以看到输出“动物” 那么就实现了子类继承与父类了!
二 : 第二种方式用prototype模式也可以实现子类继承与父类!还是上面两个函数
function animal(){
this.special = "动物";
}
function cat(name,age){
cat.prototype = new animal(); //我们将cat的prototype对象指向一个animal的实例 它相当于完全删除了prototype 对象原先的值,然后赋予一个新值。
cat.prototype.constructor = cat; /* 原来,任何一个prototype对象都有一个constructor属性,指向它的构造函数。也就是说,cat.prototype 这个对象的constructor属性,是指向cat的。 我们在前一步已经删除了这个prototype对象原来的值,所以新的prototype对象没有constructor属性,所以我们必须手动加上去,否则后面的"继承链"会出问题。 总之,这是很重要的一点,编程时务必要遵守。即如果替换了prototype对象, */ 下面我们是测试!!! var obj = new cat("xiao",12); console.log(obj.species);this.name = name;
this.age = age;
}
同样的道理在火狐下 我们也可以看到输出“动物”也实现子类继承与父类!!