造函数
一个类在初始化的时候其实也是一个函数的执行过程,这个函数就是构造函数,我们看一下下边的代码: function WuYouUser() { this.Name = "泣红亭"; //默认定义为泣红亭 alert(this.Name); } var Wo = new WuYouUser();//可以看到出现一个窗口显示泣红亭三个字 可以看出类的定义不仅仅是定义了它的属性与方法,还同时可以加入一些代码,而这些代码就是该类的构造函数的代码,在实例声明过程中被执行! 其实说起来,类的属性与类的方法都是在构造函数里执行定义的,看下边的代码: function WuYouUser() { this.Name = "泣红亭"; return; this.Sex = "男"; } var Wo = new WuYouUser(); document.write(Wo.Name); //泣红亭 document.write(Wo.Sex); //undefined,即未定义 看得出什么?Sex属性是在return;之后的,而WuYouUser类的构造函数遇到return即停止运行,换句话说this.Sex = "男";这一行是没有被执行,即Sex属性根本没有被定义! 构造函数可以有参数,参数值在声明实例的时候被传入: function WuYouUser(Name) { this.Name = Name; } var Wo = new WuYouUser("泣红亭"); document.write(Wo.Name); //泣红亭 构造函数不需要返回值,但如果你设置了返回值,可以把它当成一个函数来使用。 function Sum(a, b) { this.a = a; this.b = b; return this.a + this.b; } document.write(Sum(12, 23)); //输出的是12与23的和35 var Obj = new Sum(12,23); document.write(Obj.a) // 12 document.write(Obj.b) // 23 感觉挺奇妙,对吧?我写这文章写着写着也觉得挺奇妙的,呵呵! 但强烈建议不要把一个类当成一个函数来使用!如果你需要的是一个函数,请直接写成函数而不要写成类,以免搞混了。
继承
继承这个词在面向对象的编程里是非常重要的,虽然JavaScript并不是真正面向对象的语言,而是跟VB一样是基于对象的语言,它同样提供了继承机制。 文章开头时谈到了男人与女人,这也同样是两个不同的类,但却具有相同的一些属性以及方法,而这些相同的特性是来自“人”这个类的,换句话说男人与女人继承了“人&rdq |