日期:2014-05-16  浏览次数:20490 次

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()
            {