1.类的定义机制
1>用function关键字定义“类“。
2>function内部通过this指针定义“类“的成员。
3>function类似于其他语言中的构造函数(constructor)。
demo1:
function cls()
{
this.txt = “111”;
this.display = function(){ alert(“this is a test method”); }
}
var obj=new cls();
2.理解用new创建对象的过程
通过new cls()获得对象obj,对象obj便自动获得了属性txt和方法display。
new 创建对象过程:
1>当解释器遇到new操作符时便创建一个空对象;
2>开始运行cls这个构造函数,并将其中的this指针都指向这个新建的对象;
3>当给对象不存在的属性赋值时,解释器就会为对象创建该属性。
例如在cls中,当执行到this.txt=”111″这条语句时,就会添加一个属性txt,并把字符串“111”赋给它,这样函数执行就是初始化这个对象的过程,即实现构造函数的作用;
4>当函数执行完后,new操作符就返回初始化后的对象。
3.demo1中定义“类”的缺点
在JavaScript中,function的定义实际上就是实现一个对象的构造器,是通过函数来完成的。这种方式的缺点是:
·将所有的初始化语句、成员定义都放到一起,代码逻辑不够清晰,不易实现复杂的功能。
·每创建一个类的实例,都要执行一次构造函数。构造函数中定义的属性和方法总被重复的创建,例如: this.display=function(){ alert(“this is a test method”); }
每创建一个cls的实例,display都会被创建一次,造成了内存的浪费。
Read: 757