javascript面向對象(屬性和方法應注意的問題)

原型添加的屬性和方法與定義的屬性和方法注意的問題:

<script type="text/javascript">

        //應用原型,添加成員變量,
        //創建一個構造函數或者類
        var People = function(){};
        //創建對象,通過構造函數
        var p1 = new People();
        p1.name = "張三";
        var p2 = new People();
        p2.com = function (i,j){return i-j };
        //通過原型prototype 給People類的所有對象添加成員變量
        var pt = People.prototype;
        pt.name = "明銘";
        pt.age = 23;
        pt.com = function(i,j){return i+j};
        //通過原型prototype,給People添加方法
        
        //說明原型變量不會覆蓋,對象自己添加的屬性變量
        alert(p1.name);//輸出張三
        alert(p2.name);//輸出明銘
        alert(p2.age);
        alert(p1.age == p2.age);
        //注意,通過對象添加的方法,如果與通過原型對象添加的方法同名,則會出現對象方法覆蓋原型方法
        alert(p2.com(30,20));
        //People不是靜態成員,因此不能直接調用屬性(輸出undefind)
        alert(People.age);

    </script>



成員變量,函數調用應該注意的問題:

 <script type="text/javascript">
      //變量的定義域,所有的成員變量都相當於一個window的屬性
            var a = 10;
            b = 20;
            function Hello()
            {
                alert("hello");
            }

            alert(a);
            alert(b);
            //注意,這兒是直接打印出來函數的名字,找到函數的定義,這不是調用
            alert(Hello);
            Hello();
            //通過window調用
            alert(window);
            alert(window.a);
            alert(window.b);
            alert(window.Hello);
            window.Hello();

            //在方法中,定義的屬性,沒有var 相當於全局變量,var c = 是局部變量
            function test()
            {
                c = 100;
                //var d = 1000;
            }
            test();
            alert("c="+c);
            //alert("d="+d);
    </script>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章