由浅到深了解JavaScript类第1/2页

2019-06-03 10:29:45于丽


        NewClass.ChangeName = function(This,NewName) //注意这里是This,不是this
        {
                This.Name = NewName;
        }

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
构造函数

        一个类在初始化的时候其实也是一个函数的执行过程,这个函数就是构造函数,我们看一下下边的代码:

        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;