由浅到深了解JavaScript类

2019-06-03 20:10:05于丽

                this.Show = function()
                {
                        alert("这是A类的Show方法");
                }
                alert(this.Name);
        }

        function B()
        {
                this.Name = "郑运涛";
                this.Show = function()
                {
                        alert("这是B类的Show方法");
                }
                alert(this.Name);
        }
        B.prototype = new A();
        var Obj = new B();
        Obj.Show();

结果出现了三次警告窗口,第一个内容为泣红亭,是执行A类的构造函数里的alert(this.Name),那时候Name属性值还为"泣红亭",因为B类的构造函数还没执行,第二次内容为"郑运涛",这是B类里的alert(this.Name),因为B类的构造函数里给Name重赋值为"郑运涛"。最后是调用了Obj.Show(),执行了不是A类的Show方法里的Show(显示"这是A类的Show方法"),而是执行了B类的Show(显示"这是B类的Show方法"),很明显Show方法被重写了。

类作为一个对象时的属性与方法(不知道如何简洁地表达,因此用了这么长的题目)
        不知道在这里谈这个话题是否有点混人耳目,但又觉得不谈这篇文章就不算完整,因为文章目的就是要让人搞清楚类的方方面面。

        看了这一小节的题目,或许你会觉得奇怪,类就是类,怎么会“作为一个对象”呢?在JavaScript里,一切都是对象,包括类!对象可以有属性,可以有方法,类也同样可以有,但这个非常容易跟前边说到的静态属性与静态方法搞混了,因此要仔细看清楚两者的分别!