首页 > Web开发 > 详细

JS面向对象

时间:2015-09-13 21:33:30      阅读:393      评论:0      收藏:0      [点我收藏+]

面向对象是把实现问题的方法看成对象,是实际存在的一个事物。类是对象的抽象,对象是类的实例。JS中没有类的概念,JS中称为原型,也是对象,相比类,原型可以动态操作该对象的属性和方法.
通过构造函数<用来产生对象>,创建对象.

    <script>
        //定义一个对象
        function People(name,age){
        //属性
        this.name = name;
        this.age = age;
        //一个方法
        this.run = function(){
            alert(this.name + "paopaoapo");
        }
    }
    
        People.prototype.qq="12345";//给People原型添加属性qq
        var p1=new People("小明",18);//存储的内存地址
        p1.age=25;
        var p2=new People("小明2",19);//p1、p2是两个不同对象 来自同一个原型
        p1.sex="男";
        alert(p1.name + " " + p1.age +" " + p1.sex+" "+p1.qq+"   " +p2.name + " " 
        + p2.age+" " + p2.sex+" "+p2.qq);
        p1.run();
        p2.run();

    </script>
JS是没有类的,所以继承的实现我们可以用一下方法实现:
    
    function Man(name,age){
        this.fight="PK";
        //调用父类的构造函数传参《不需要传参数就可以不用》
        this.constructor(name,age);
        //对象冒充法一
        //        this.inherit = People;//模拟继承 调用People函数
        //        this.inherit(name,age);//执行People
        //        delete this.inherit;//删除inherit属性
        //对象冒充法二
        //        People.call(this,name,age);//this表示Man对象
        //对象冒充法三
        //          People.apply(this,[name,age]);//this表示Man对象,和call不一样的是传参数方式
        //
    }
    Man.prototype = new People();//Man的prototype<原型>为People 真实继承 原型链

    var m1=new Man("大胖",56);
    //    m1.run();
    console.log(m1);
    //    console.log(m1 instanceof Man);//对象冒充法一二三 真实继承为true

    console.log(m1.constructor);
    //    打出function People(name,age){
    //        //属性
    //        this.name = name;
    //        this.age = age;
    //        //一个方法
    //        this.run = function(){
    //            alert(this.name + "paopaoapo");
    //        }
    //    }
    console.log(m1 instanceof People); //对象冒充法一二三为false 真实继承为true
    //    console.log(m1.__proto__.__proto__.__proto__.__proto__);//__proto__和prototype一样的

JS面向对象

原文:http://www.cnblogs.com/yttbbd/p/4805618.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!