问题背景
Javascript 与 Python 两种语言越来越象,但是 Python 语言里有一个优点有 class 关键字,可以用系统标准的方法来定义和继承. 但是 Javascript 无此关键字,只能用 function 来间接实现类和继承. 因此方法五花八门.初学者往往无所适从. 这里有一套标准模板,可以适应大部分情况.
类模板
//基类声明
function Person(age,name){
this.Age = age; //类属性
this.Name = name; //类属性
// 定义类方法之一
this.sayHello = function() {
alert('Person say Hello');
}
}
//定义类方法二:
Person.prototype.run = function() {
alert('Person run');
}
//子类声明
function Worker(height,name){
Person.call(this,18,name); //调用父类的构造函数,注意用 call 并把 this 指针传入,相当于让 Person()对 Worker()初始化属性
this.height = height; //子类新增属性
// 定义类方法之一,注意这里与基类重名,表示重载方法
this.sayHello = function() {
alert('Work say Hello');
}
}
Worker.prototype = new Person; //继承关键复制基类所有方法和属性,这里不需要参数
//子类扩展方法
Worker.prototype.doWork = function() {
alert('Woker work');
}
测试
var worker = new Worker(180,'Tom');
worker.sayHello(); //执行子类方法
alert(worker.Name); //打印'Tom',
网友评论