//定义父类 function Parent(x, y){ this.x = x; this.y = y; } //定义父类的实例方法 Parent.prototype.sum = function(){ return this.x + this.y; } //定义子类并继承Parent function Child(x, y, z){ // 据说下面这行可以用于单层的继承,但是我的浏览器中会报错:TypeError: this.superclass is not a function //this.superclass(x, y); //调用构造函数链 //Parent.call(this, x, y); this.z = z; } //继承Parent的原型,如果没这句,则默认继承Object的原型 Child.prototype = new Parent(); //不需要的属性删除 delete Child.prototype.x; delete Child.prototype.y; //前面我们用Parent创建了Child的原型对象,所以需要重新给原型对象的constructor属性赋值,否则该属性和Parent的constructor相同 Child.prototype.constructor = Child; Child.prototype.multiply = function(){ return this.x * this.y * this.z; } var parent = new Parent(1,2); var child = new Child(1,2,3); alert(parent.sum()); //ok alert(child.sum()); //ok alert(child.multiply()); //ok alert(parent.multiply()); //error:no such method