在javascript1.5和其以前版本都是基于对象的,也就是说几乎任何东西(除了一些基本数据类型外)都可以看成是对象,包括函数。而用函数表现出来的“类模板”,并用objname=new funcname(val)语句来构造一个“类实例”的方法其实都是基于对象的模拟操作,并没什么真的类似于静态语言中那样的类机制。在js中,其实只要构造出新的对象都离不开objname=new Object().
function vClass(val)
{
this.attr=val;
}
vClass.prototype.meth=function()
{
alert(this.attr);
}
然后构造对象并调用其方法
vobj=new vClass("hello world");
vobj.meth();
以上代码等同于
vobj=new Object()
vobj.constructor=vClass; //类模板其实等同于对象的一个方法用于扩展自身属性或方法
vobj.prototype=vobj.constructor.prototype; //和类模板的基对象建立关联
vobj.constructor("hello world"); //扩展vobj对象的属性或方法,因为是基于vobj调用,this就是vobj
vobj.meth();