最近一个搞网页的朋友在群里教导小弟时说:JavaScript可以玩类
不禁有个问号:脚本也可以搞类?
空闲时看了一下JavaScript帮助文档,觉得不能玩类,如果非要说它能玩类,也只能玩弱智类,因为类的很多特性都没有,如:多态、访问性控制(private、public、......),书写时也够累的,要加很多this。
如果想要一个类内部方法间使用,外面不可见的属性就没法搞定,函数间互访同一个属性得在前面加this,如果属性加了this修饰,外部也可能访问,下面定义一下"类",学生类
function 学生类型(学号, 姓名, 分数)//相当于构造函数
{
this.姓名 = 姓名;
this.分数 = 分数;
this.学号 = 学号;
this.显示学生信息 = 显示学生信息;//太累了,定义一个方法
}
function 显示学生信息()
{
var Msg = "学号:" + this.学号 + "<br/>";
Msg += "姓名:" + this.姓名 + "<br/>";
Msg += "分数:" + this.分数 + "<br/>";
return Msg;
}
var 学生 = new 学生类型("110", "HaHk", 60);
var Msg = 学生.显示学生信息();
document.write(Msg);
输出如下:
学号:110
姓名:HaHk
分数:60
"继承",可能叫简单功能扩展比较合适
//增加一个属性:英文名
var 英文名 = new String();
学生类型.prototype.英文名 = 英文名;
//增加一个方法:显示英文名
学生类型.prototype.显示英文名 = 显示英文名;
function 显示英文名()
{
var str = "英文名:" + this.英文名 + "<br/>";
return str;
}
var 学生 = new 学生类型("110", "HaHk", 60);
var Msg = 学生.显示学生信息();
document.write(学生.显示学生信息());
学生.英文名 = "milk";
document.write(学生.显示英文名());
输入如下:
学号:110
姓名:HaHk
分数:60
英文名:milk
通过上面的例子,可以看出有多累了,如果要模仿类,真的很吃力
copyright:borbby