继承是面向对象开发的又一个重要概念,它可以将现实生活的概念对应到程序逻辑中。例如水果是一个类,具有一些公共的性质;而苹果也是一类,但它们属于水果,所以苹果应该继承于水果。
在JavaScript中没有专门的机制来实现类的继承,[color=red]但可以通过拷贝一个类的prototype到另外一个类来实现继承。[/color]
[color=red]说明:类的构造函数里定义的function,即为私有方法;而在构造函数里用var声明的变量,也相当于是私有变量。[/color]
在JavaScript中没有专门的机制来实现类的继承,[color=red]但可以通过拷贝一个类的prototype到另外一个类来实现继承。[/color]
//定义class1
function class1(){
//构造函数
}
//定义class1的方法成员
class1.prototype={
method:function(){
alert(1);
}
}
//定义class2
function class2(){
//构造函数
}
//让class2继承于class1
class2.prototype=class1.prototype;
//给class2重复定义方法method
class2.prototype.method=function(){
alert(2);
}
//创建两个类的实例
var obj1=new class1();
var obj2=new class2();
//分别调用两个对象的method方法
obj1.method();
obj2.method();
[color=red]说明:类的构造函数里定义的function,即为私有方法;而在构造函数里用var声明的变量,也相当于是私有变量。[/color]
var Person = function(name,sex){
this.name = name;
this.sex = sex;
var _privateVariable = "";//私有变量
//构造器中定义的方法,即为私有方法
function privateMethod(){
_privateVariable = "private value";
alert("私有方法被调用!私有成员值:" + _privateVariable);
}
privateMethod(); //构造器内部可以调用私有方法
//定义内部方法进行调用私有函数
this.callPrivateMethod = function(){
privateMethod();
}
}
Person.prototype.sayHello = function(){
alert("姓名:" + this.name + ",性别:" + this.sex);
}
var p = new Person("菩提树下的杨过","男");
p.sayHello();
//调用私有函数
p.callPrivateMethod();
//p.privateMethod();//这里将报错,私成方法无法被实例调用
alert(p._privateVariable);//显示: undefined