js面向对象的基础(一)...
时间:2010-08-18 来源:Kenneth_Hao
JavaScript中定义一个类,也就是一个函数.
function class1(){ //类成员定义以及构造函数 this.name = 'kenneth'; //公共成员属性 this.age = 20; //公共成员属性 var secret = 'secret'; //私有成员属性 function showSecret(){ //私有方法属性 alert(secret); } this.method1 = function(){ //公有成员访问私有属性,调用私有方法 secret = 'secret2.0'; showSecret(); } } var classInstance = new class1(); classInstance.method1(); //调用公有方法 alert(classInstance.name); //显示公有属性 classInstance = null ; //释放内存
JavaScript 提供了一些内置对象,如表示日期的Date类。可以通过 new Date(); 来获得一个实例。同样,对于class1,也可以new一个实例,var classInstance = new class1(); ,通过此实例操作对象的属性和方法。
在实际运用中,可以加入参数传递进行类的构造。如 var studentA = new Person("student","光明小学");
分析一下new创建对象的过程,这里要了解到this指针的概念。面向对象中的一个重要概念,它表示当前运行的对象,在实现对象操作时,this指针可以获得该对象自身的引用。
(1)当解释器遇到new操作符时,创建一个空对象。
(2)开始运行class1这个函数,并将其中(函数,类构造器)的this指针都指向这个新建的对象。
(3)解释器为对象创建属性和方法,如上述实例的属性name,age,以及方法method1().
(4)当这个初始化过程结束后,即完成了构造函数的作用,new操作符返回初始化后的对象。
However , 以这样的方式创建对象,每次都要重复创建属性和方法,造成了内存的浪费,还有一种定义类的机制,prototype对象,可以解决定义类成员带来的缺点。To be continue......