function Dog(){}; Dog.prototype = new Animal("Henry");
function Pig(){}; Pig.prototype = new Animal("Coco");
var dog = new Dog(); dog.jump(); dog.eat();
var pig = new Pig();
pig.jump(); pig.eat();
运行之后,因为继承了Animal类的原因,结果肯定又是“XX is jumping...”,“XX is eatting...”了,那我们要实现的,就是进行方法的重写。我们可以有下面的方式实现方法的重写。
代码如下
复制代码
function Dog(){};//创建dog子类 Dog.prototype = new Animal("Henry"); //重写dog的方法 Dog.prototype.jump = function(){ alert("Hi, this is " + this.name + ", I'm jumping...") }; Dog.prototype.eat = function(){ alert("Henry is eatting a bone now."); };
function Pig(){};//创建pig子类 Pig.prototype = new Animal("Coco"); //重写pig的方法 Pig.prototype.jump = function(){ alert("I'm sorry. " + this.name + " can not jump."); }; Pig.prototype.eat = function(){ alert("Hi, I'm " + this.name + ", I'm eatting something delicious."); }
var dog = new Dog(); dog.jump(); dog.eat();
var pig = new Pig();
pig.jump(); pig.eat();
运行一下,是不是实现了对方法的重写呢??
6、那么,假如我实例化一只dog之后,我想单独为这只dog添加属性和方法,怎么做呢?看下面
代码如下
复制代码
var dog = new Dog(); //添加属性和方法 dog.type = "Doberman Pinscher"; dog.shout = function(){ alert("I'm a " + this.type + "."); } dog.jump(); dog.eat(); //调用新的方法 dog.shout();